我试图了解这个 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 是一个循环计数器或该数组的索引。

在英特尔语法中,这将是:
mov heap[rdx*4], eax

有关语法之间的比较,请参阅 this page

关于assembly - x86 堆方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14331649/

10-13 03:01