我目前正在尝试通过分析简单的 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/

10-11 21:22