x86堆方法

ban*_*ing 3 x86 assembly x86-64

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

 movl %eax, heap(,%rdx,4)
Run Code Online (Sandbox Code Playgroud)

这就是我认为它的作用:

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

它是否正确?

谢谢

Jon*_*art 6

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

%segreg:disp(base,index,scale).
Run Code Online (Sandbox Code Playgroud)

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

heap[rdx*4] 
Run Code Online (Sandbox Code Playgroud)

因此,换句话说,存储在值eaxrdx从年初*4个字节heap.由此,我们可以推断出这heap可能是一个4字节整数的数组,并且rdx是该数组的循环计数器或索引.

在Intel语法中,这将是:

mov heap[rdx*4], eax
Run Code Online (Sandbox Code Playgroud)

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