LoginSignup
14
12

More than 3 years have passed since last update.

x86 命令セット

Last updated at Posted at 2019-12-03

フラグ

フラグの種類 呼び名
O オーバーフロー
D ディレクション
I インタラプトイネーブル
T トラップ
S サイン
Z ゼロ
A 補助キャリー
P パリティ
C キャリー

命令セットのニーモニック

命令の種類 ニーモニック ニーモニックの意味 命令の意味
転送 mov コピー
転送 mov ロード(メモリ等からレジスタへコピー)
転送 mov ストア(レジスタからメモリ等へコピー)
転送 xchg 入れ替え
算術 adc, add 加算
算術 sbb, sub 減算
算術 mul 乗算
算術 div 除算
算術 inc, dec 1足す,1引く
論理演算・ビット操作 and, or, xor 論理積・論理和・排他的論理和
論理演算・ビット操作 neg, not, test 符号反転・反転・テスト
シフト sal 論理左シフト
シフト sar 論理右シフト
シフト shl 算術左シフト
シフト shr 算術右シフト(キャリーを含めてシフト)
ローテート rol 左ローテート
ローテート ror 右ローテート
ローテート rcl キャリーを含めて左ローテート
ローテート rcr キャリーを含めて右ローテー
条件分岐 JE 前の結果が0なら分岐.ゼロフラグ=1なら分岐.
条件分岐 JNE 前の結果が1ならば分岐.ゼロフラグ=0なら分岐.
条件分岐 JL 前の結果が0より小さければ分岐
条件分岐 JG 前の結果が0より大きければ分岐
条件分岐 JLE 前の結果が0以下なら分岐
条件分岐 JGE 前の結果が0以上なら分岐
条件分岐 jmp 分岐,ジャンプ
条件分岐 JG 前の結果が0より大きければ分岐
条件分岐 JLE 前の結果が0以下なら分岐
条件分岐 JGE 前の結果が0以上なら分岐
コール call サブルーチンへ分岐
コール ret サブルーチンから復帰
スタック push スタックに積む
スタック pop スタックから復帰
その他 NOP 何もしない

ニーモニックの前後に付く文字の意味

接尾辞の種類 接尾辞の文字の意味 意味 命令の例
...B byte 1バイト MOVB, ADDB, BRAB
...W word 2バイト MOVW, ADDW, BRAW
...L long 4バイト MOVL, DIVL, JMPL, PUSHL, JL, COMPL
...I,I... integer 整数 DIVSI, IMUL
...S singed 符号付 ADDSL, MULSI, SUBS
...C with carry キャリーやボローを考慮 ADDC, SUBC

レジスタ名の表記

レジスタ名の前に%を付ける

表記 ビット数 役割
eax,ecx,edx,ebx,esp,ebp,esi,edi 32bit 汎用レジスタ
AX, BX, CX, DX 16bit 汎用レジスタ(EAX, EBX, ..)の下位16bit
AH, AL 8bit AXの上位8bit, 下位8bit
cs,ds,es,fs,gs,ss 16bit セグメントレジスタ
SP CPUのビット数 スタックポインタ
PC CPUのビット数 プログラムカウンタ

アドレッシングモードの表記

数値の前に$を付ける
レジスタ間接アドレッシングは、(%esi)です。

以上。

14
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
12