我试图了解这个 x86 指令在做什么:
movl %eax, heap(,%rdx,4)
这就是我认为它在做的事情:
将 eax 中的值移动到内存中从标签堆开始的区域,并从 rdx 中的值移位字节。
这个对吗?
谢谢
内存操作数的 AT&T 语法是:
%segreg:disp(base,index,scale).
因此,您显示的指令中的内存地址是(用 Intel 语法更好地表示):
heap[rdx*4]
所以换句话说,将值存储eax
在rdx
*4 字节的开头heap
。由此,我们可以推断这heap
可能是一个 4 字节整数数组,并且rdx
是该数组的循环计数器或索引。
在 Intel 语法中,这将是:
mov heap[rdx*4], eax
有关语法之间的比较,请参阅此页面。