Вопрос о преподавании, IA32 - PullRequest
0 голосов
/ 02 июня 2011

Если у меня есть инструкция IA32, подобная следующей:

lea 0x4(x1, x2, x3), %eax

Что представляют собой x1, x2 и x3? Спасибо.

Ответы [ 2 ]

4 голосов
/ 02 июня 2011

Если вы имеете в виду «для чего это нужно», перейдите по ссылке в комментарии Грега.

Если ваш вопрос касается синтаксиса и вы знакомы с синтаксисом Intel (но не с синтаксисом AT & T), x1 является базовымx2 - индекс, а x3 - масштаб (смещение 0x4).Таким образом,

lea 0x4(x1,x2,x3),%eax

эквивалентно

lea eax,[x1+x3*x2+4]

Подробнее см. в этой статье на SourceForge.

0 голосов
/ 02 июня 2011

Это регистр base , регистр index и значение scale . Таким образом, это полезно для вычисления адреса элемента массива base элементов размером scale в позиции index , т.е. в C:

base[index]

, где scale будет 1 для массива char , 2 для массива short , ... на типичных компиляторах C для x86.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...