1. ホーム
  2. スクリプト・コラム
  3. その他

[解決済み】IA-32 AT&T構文でのMOVZBL命令は何をするのですか?

2022-01-03 01:29:07

質問

この命令は具体的に何をするのですか?

movzbl  0x01(%eax,%ecx), %eax

解決方法は?

AT&T構文で分割される movzx インテル命令ニーモニック を、ソースサイズごとに異なるニーモニックに変換します ( movzb vs. movzw ). インテル構文では

movzx eax, byte ptr [eax+ecx+1]

つまり、eax+ecx+1 にメモリからバイトをロードし、ゼロ拡張してフルレジスタにします。

ところで、ほとんどの GNU ツールには、Intel 構文を優先するためのスイッチや設定オプションがあります。 (例えば objdump -Mintel または gcc -S -masm=intel ただし、後者は inline-asm のコンパイル時に使用される構文に影響します)。 AT&Tのアセンブリを生業としていないのであれば、ぜひとも調べてみることをお勧めします。 また x86 タグのwikiに詳しいドキュメントとガイドがあります。