了解 LEA 指令 x86

问题描述

我已经阅读了许多关于 LEA 指令的答案,我认为我理解它们,但是如果我试图理解以下汇编代码,那么这个主题对我来说就没有意义了。

enter image description here

以及对应的C程序:

enter image description here

所以 leal (%rdi,%rsi),%eax 添加两个地址 - x 和 y 的地址并将结果写入 %eax?这有什么意义?为什么我们需要 t1 的地址?如果我们取消引用该地址,则该地址中没有任何内容。

此外,在下一条指令中,我们将 z 的值(或 z 的地址?)和我们在 lea 指令中计算的地址相加。这一切对我来说都没有意义。

或者我没有正确理解 lea 指令? lea 指令将 x 和 y 的值相加,并将相加结果写入一个内存位置,并将该内存位置 (t1) 的地址写入 %eax?那么为什么我们会说 lea 指令不执行内存访问?

我卡住了。有人可以告诉我前两条指令的寄存器中的值(值或地址)是什么?这真的很有帮助。

感谢您的帮助。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...