我目前正在尝试通过分析简单的 C 代码片段来学习汇编语言(以及不同编译器选项的效果)。现在我偶然发现了以下指令:
mov %edx,-0x80(%rbp,%rax,4)
我不明白的是目标地址
-0x80(%rbp,%rax,4)
的表达式。该指令在循环中为本地数组赋值。
最佳答案
机器命令会将 %edx
的内容复制到 %rbp + 4 * %rax - 0x80
给出的地址。似乎 %rax
持有该数组的索引,而 %rbp - 0x80
是基地址。
查看 here 以更好地理解 AT&T 语法。
关于assembly - 如何解释这个地址 -0x80(%rbp,%rax,4),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13359068/