我试图了解这个 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/