この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
その配列へのループカウンターまたはインデックスであると推測できます。
Intel構文では、これは次のようになります。
mov heap[rdx*4], eax
構文の比較については、このページを参照してください。