c - 内存间接寻址 movl - 汇编

标签 c assembly addressing-mode

我正在尝试了解内存间接寻址在使用 AT&T 语法的汇编语言中究竟是如何工作的。

movl (%eax), %ebx

movl %eax, (%ebx)

这是一个类似的问题,解释了 memory indirect addressing

这是我的理解:

在第一种情况下,您加载寄存器%eax指向的数据并将其存储在%ebx中。

在第二种情况下,您将寄存器%eax 中的数据存储到寄存器%ebx 指向的地址空间。我说得对吗?

最佳答案

基本上语法是

movl source, destination

所以movl (%eax), %ebx确实是将%eax指向的地址处的值复制到%ebx中。而movl %eax, (%ebx)就是将寄存器%eax中的值复制到%ebx指向的地址中。

所以你的理解确实是正确的。

关于c - 内存间接寻址 movl - 汇编,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17020739/

相关文章:

c,函数参数的运行时缓冲区大小

c++ - 如何将多个 fma 操作链接在一起以提高性能?

c - float[] 数组的平均值(Intel 8086)

assembly - x86 操作码编码 : sib byte

assembly - 如何使用GDB打印复杂寻址模式引用的内存?

c - 从文件行扫描直到 C 中的整数

c - mingw const char 字符串显然不是 const

assembly - x86_64 程序集 : effects of the interrupt flag and TPR register

assembly - 清理堆栈时可以将动态值(寄存器或内存)与 RET 一起使用吗?

assembly - CS : override on access to global variables in IDA output, 像 mov eax, cs :x?