3

我试图了解这个 x86 指令在做什么:

 movl %eax, heap(,%rdx,4)

这就是我认为它在做的事情:

将 eax 中的值移动到内存中从标签堆开始的区域,并从 rdx 中的值移位字节。

这个对吗?

谢谢

4

1 回答 1

6

内存操作数的 AT&T 语法是:

%segreg:disp(base,index,scale).

因此,您显示的指令中的内存地址是(用 Intel 语法更好地表示):

heap[rdx*4] 

所以换句话说,将值存储eaxrdx*4 字节的开头heap。由此,我们可以推断这heap可能是一个 4 字节整数数组,并且rdx是该数组的循环计数器或索引。

在 Intel 语法中,这将是:

mov heap[rdx*4], eax

有关语法之间的比较,请参阅此页面

于 2013-01-15T05:35:07.980 回答