1

アセンブリプログラミングの基礎を改めて学んでいます。アセンブリ言語のステップバイステップ: Linux でのプログラミング をゆっくりと進めています。

NASM を使用して、64 ビット Slackware マシン (x86-x64) で作業しています。

アドレスをインクリメントすることの意味について少し混乱しています。私のbssセクションには、Buffer resb 4096バッファがあります。セクションでは、アドレスを次textのように割り当てます。esi

mov esi, Buffer

後で、私inc esi。これはesi、次のバイト オフセットに進むように見えます。少し驚きesiました。32 ビット レジスタなので、4 バイト進むと思っていました。

アドレスをインクリメントすると、常に一度に 1 バイトずつ移動すると仮定できますか? add esi, 432ビットを進めるために使用しますか?

32 ビット レジスタを埋める場合、明示的に 4 バイトを要求する必要がありますか? みたいなmov eax, DWORD [esi]

4

1 に答える 1