アセンブリプログラミングの基礎を改めて学んでいます。アセンブリ言語のステップバイステップ: Linux でのプログラミング をゆっくりと進めています。
NASM を使用して、64 ビット Slackware マシン (x86-x64) で作業しています。
アドレスをインクリメントすることの意味について少し混乱しています。私のbss
セクションには、Buffer resb 4096
バッファがあります。セクションでは、アドレスを次text
のように割り当てます。esi
mov esi, Buffer
後で、私inc esi
。これはesi
、次のバイト オフセットに進むように見えます。少し驚きesi
ました。32 ビット レジスタなので、4 バイト進むと思っていました。
アドレスをインクリメントすると、常に一度に 1 バイトずつ移動すると仮定できますか? add esi, 4
32ビットを進めるために使用しますか?
32 ビット レジスタを埋める場合、明示的に 4 バイトを要求する必要がありますか? みたいなmov eax, DWORD [esi]
?