Ада-95. Компилятор GNAT

       

Косвенная адресация


Теперь нам известно как загрузить значение адреса и содержимое памяти.

Но как загрузить содержимое памяти на которое указывает адрес расположенный в памяти или регистре?

Синтаксис AT&T не использует средства подобные "BYTE PTR", которые традиционны для ассемблера Intel.

Для загрузки регистра ebx 32-битным содержимым памяти адрес которого храниться в регистре eax необходимо написать:

movl (%eax), %ebx

Для добавления смещения к адресу в регистре eax, необходимо использовать это смещение как префикс.

Например, для получения содержимого 4-мя байтами ниже адреса, указанного в регистре eax, следует написать:

movl -4(%eax), %ebx

или использовать содержимое памяти подобным образом:

movl my_var(%eax), %ebx

Существует большое количество возможных схем адресации (при необходимости, лучше обратиться к руководству по as) однако того, что перечислено, как правило, достаточно для использования встроенного ассемблера.



Содержание раздела