R0 CREW

IDA PRO и сегментные регистры (сегментированная память)(как это работает?)

Не для кого не секрет, что ряд процов использует сегментную(страничную) память.
В частности, платформа x86 в некоторых режимах работы использует сегментную модель памяти.
В кратце, пространство памяти делится на сегменты. И адресация происходит не через абсолютное значение адреса, а внутри сегмента. То есть есть некоторый регистр , который хранит начальный адрес сегмента и далее окончательное адресование происходит путем прибавление смещения внутри сегмента к этому адресу.

Предположим есть сегментный регистр ds.
тогда адрес будет описываться как ds:cxyz.
например ds =1000 cxyz=3000
тогда виртуальный адрес будет =(1000<<4)+3000=13000h

Суть вопроса- каким образом IDA PRO высчитыват преходы на виртуальные адреса, то есть фактически вычисляет виртуальный адрес, если в каждый момент анализа например комманды jmp ds:1002 , IDA знает только величину 1002, но не знает содержание регистра ds?