Режим адресации в IA-32
Я искал режимы адресации в IA-32, но я не видел ни веб-сайта, ни статьи, в которых бы просто объяснялись режимы адресации. Мне нужна статья или что-то, что объясняет вопрос просто с помощью некоторой картины памяти во время ее изменения и указания режима адреса с помощью картинок.
Я знаю, что в IA-32 общая форма адресации имеет следующую форму:
Сегмент + База + (индекс * шкала) + смещение
Я хочу знать точное значение смещения, масштаба, индекса и, наконец, основы. Поскольку я также не знаю английского языка, я вынужден искать их, но я не нашел технического значения слов для этого случая (я имею в виду язык ассемблера).
Наконец, я хочу, чтобы объяснение режимов адресации в IA-32 было просто и предпочтительно представлено картинками о памяти и ее смещении и...
Я изучаю язык программирования на ассемблере по Руководству по программированию на ассемблере в книге Linux.
Тогда спасибо.
1 ответ
Нашел это изображение из презентации Power Point.
Это означает, что вы можете иметь такие адреса, как [eax + ecx * 2 + 100]
, Вам не обязательно использовать все эти поля. Сегментный регистр выбирается автоматически в зависимости от рассматриваемой инструкции или с префиксом переопределения сегмента (например, ds:
, cs:
). Значение регистра сегмента сдвигается на 4 бита влево и добавляется к адресу, вычисленному из основания, индекса, масштаба и смещения, чтобы получить окончательный адрес.