アセンブリ言語
記法の種類
プロセッサによってアセンブリ言語の記法が異なり、「intel記法」と「AT&T記法」がある。
intel記法
AT&T記法
プレフィックスが付くという特徴がある。(値に, レジスタに)
コマンドの構成
オペコード一覧
オペコードまとめ (intel記法)
オペコード | 概要 | 例 | 例の説明 |
---|---|---|---|
mov | mov eax, 2(eax=2) mov eax, ebx(eax=ebxの格納値) | ||
push | レジスタの値をスタックに積む | push rbp | rbpの格納値をスタックに積む |
pop | pop rbp | rbpにスタック値を格納 | |
jmp | 指定したアドレスへ移動 | jmp r13 | |
lea | メモリのアドレス自体をディスティネーションに書き込む [Load Effective Address] | lea rax,[rbp-0x110] | rbpの値が0x7ffffffedca0の場合、 raxに0x7ffffffedb90を書き込む |
leave | 下記の命令と同等の処理を実行 MOV rsp, rbp POP rbp | ||
call | 次の命令のアドレスをstackにpushし、ripにオペランド(呼び出す関数)のアドレスを代入 | call 4011b6 <func> | 次の命令のアドレスをstackにpushし、ripレジスタに呼び出す関数のアドレス0x4011b6を代入 push eip mov eip, <func> |
ret | 元の関数に戻る。 stackからpopしたアドレスをripに代入 | ret |