mov
アセンブリの指示を理解しようとしています。次のようになります。
mov 0x804a12c(,%eax,4),%eax
%eax
新しい結果をアドレスに移動していることは知って0x804a12c
いますが、その部分がわかりません(,%eax,4)
。
洞察はありますか?ありがとう!
この0x804a12c(,%eax,4)
ピースは、x86 でのアドレス指定のモードです。この部分は次のように分解できます。
DISPLACEMENT(BASE,INDEX,WIDTH )
実際のアドレスは次の式で計算されます。
BASE + (INDEX * WIDTH ) + DISPLACEMENT
したがって、命令:
mov 0x804a12c(,%eax,4),%eax
レジスターに移動0 + (%eax * 4) + 0x804a12c
し%eax
ます。
これにより、メモリ アドレスの dword が に移動0x804a12c + %eax * 4
され%eax
ます。そのような命令は、たとえば int のグローバル配列の計算されたインデックスでのアクセスであると考えるかもしれません。