使用索引寻址方式将地址移动到寄存器
Move address to register by using the indexed addressing mode
是否可以使用索引寻址模式语法计算地址并将其存储到寄存器中?类似于以下(错误的)表达式(在 AT&T 汇编语法中):
movl $dataarray(,%edi,8), %eax
我知道索引寻址方式可以用来移动数据:
movl dataarray(,%edi,8), %eax
但是,在这种情况下,我想做的是将%edi
索引的dataarray
的元素的地址存储到%eax
注册.
正如 中所建议的那样,lea
指令可用于该目的:
leal dataarray(,%edi,8), %eax
这样,地址(并且不是那个地址的值,因为它与 mov
指令一起出现)被计算并存储到 eax
寄存器中。
是否可以使用索引寻址模式语法计算地址并将其存储到寄存器中?类似于以下(错误的)表达式(在 AT&T 汇编语法中):
movl $dataarray(,%edi,8), %eax
我知道索引寻址方式可以用来移动数据:
movl dataarray(,%edi,8), %eax
但是,在这种情况下,我想做的是将%edi
索引的dataarray
的元素的地址存储到%eax
注册.
正如 lea
指令可用于该目的:
leal dataarray(,%edi,8), %eax
这样,地址(并且不是那个地址的值,因为它与 mov
指令一起出现)被计算并存储到 eax
寄存器中。