使用索引寻址模式将地址移动到寄存器
问题描述:
是否可以使用索引寻址模式语法计算地址并将其存储到寄存器中?像下面(错误)的表达(在AT & T汇编语法):使用索引寻址模式将地址移动到寄存器
movl $dataarray(,%edi,8), %eax
我知道变址寻址模式,可以用于移动数据:
movl dataarray(,%edi,8), %eax
然而,在这种情况下,我想要做的是将dataarray
元素的地址存储在%eax
寄存器中,其索引为%edi
。
答
如this comment已经建议的,lea
指令可以被用于该目的:
leal dataarray(,%edi,8), %eax
这样,地址(和不的值在该地址,因为它发生与mov
指令)被计算并存储到eax
寄存器中。
+0
感谢您的快速回答和解释 – cppstudy
你是指'lea'指令吗? –
@MargaretBloom的确是的。谢谢。 – cppstudy