最終更新:2015-07-17 (金) 07:13:42 (3205d)  

x86アセンブラ
Top / x86アセンブラ

アセンブラ

  • GAS - GNU Assembler
  • MASM - Microsoft Macro Assembler
  • FASM? - Flat Assembler
  • NASM - Netwide Assembler

アーキテクチャ

ニーモニック

命令プレフィックス (1バイト)

  • 16ビット演算の場合や拡張命令を指定したいときなど、少し特殊な場合に使用
  • 32ビット演算のmov、add、subなどの単純な命令のときは省略されることがほとんど

オペコード (1~2バイト)

  • 命令

ModR/M (1バイト)

  • x86では、二つのオペランドがあるレジスターを扱う命令は、このバイトをパラメーターとしてオペコードの直後に置く。
  • 片方はレジスタに固定、もう片方はレジスタまたはメモリが選択可能
  • レジスターを使う場合はオフセットを追加することができる
  • mul命令もdiv命令も基本オペコードはF6で、拡張オペコード(つまりModR/MバイトのReg/Opcodeフィールド)で両者は区別される

SIB (1バイト)

ディスプレースメント (1~4バイト)

即値 (1~4バイト)

参考

Intel 64

関連

参考