Suppose we need to create a segment occupying linear addresses 200000-200C00 and the virtual addresses must have be 0000..0C00. If we simply enter
| Previous topic
| Next topic
segment start address: 0x200000 segment end address: 0x200C00 segment base: 0x20000Then IDA will notice that the segment base is too big and does not fit into 16bits. Because of this IDA will find a free selector (let's say it has found selector number 5), define it to point at paragraph 0x20000 and create a segment. After all this we will have:
- a new selector is defined (5 -> 0x20000) - a new segment is created. Its attributes: start = 0x200000 end = 0x200C00 base = 5The first virtual address in the segment will be 0:
VirtualAddress = LinearAddress - (SelectorValue(SegmentBase) << 4) = 0x200000 - (SelectorValue(5) << 4) = 0x200000 - (0x20000 << 4) = 0x200000 - 0x200000 = 0Please note that the end address never belongs to the segment in IDA.
Go back to addressing space concepts