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