2014-02-14 3 views
-1

Вы разрешили сделать абстрактный звонок с LEA, как:Разрешено ли LEA [x], [y]?

LEA [x], [y] 

где х и у являются действительными регистрами или адрес. Кто-то спросил меня на днях, и я понятия не имел. Load Effective Address будет загружать y в адрес x , содержащий значение указывает на, я думаю. Если этот способ действителен, что бы вы сделали с этим?

+0

Что вы думаете об этом: 'abstract call'? LEA не является инструкцией 'call'! –

+2

Нет; сборка такая же жесткая. Возможность использования произвольно сложного выражения в любом месте вместо константы или переменной является одной из причин, по которой были изобретены языки высокого уровня. –

ответ

6

№. Единственная действительная форма LEA - LEA register, memory. (то есть операнд назначения должен быть регистром). Проконсультируйтесь с томом 2 Руководства разработчика программного обеспечения Intel 64 и IA-32 для исчерпывающей ссылки на этот вопрос.

Последовательность:

LEA reg, [y] 
MOV [x], reg 

эквивалентно вашей гипотетической инструкции; это не ужасно полезная последовательность, но она тоже не бесполезна. Среди других целей его можно использовать для хранения указателя, который напрямую ссылается на элемент структуры или массива.

Смежные вопросы