アセンブラ入門 -レジスタ-
セキュリティー業界はアセンブラが読めないと話にならないらしいので勉強したいと思います。
レジスタ一覧
汎用レジスタ
R〇〇が64ビットレジスタ。
X〇〇が32ビットレジスタ。
よく使われるレジスタはあるけど基本的に自由。だけどESPとRBPは変更しないほうがいいっぽい。
レジスタ名 | 意味 |
RAX (EAX, AX, AL, AH) | アキュームレータレジスタ。算術演算結果が格納される。 |
RCX (ECX, CX, CL, CH) | カウンタレジスタ。ループ命令などのカウンタなどに使われる。 |
RDX (EDX, DX, DL, DH) | データレジスタ。なんにでも使われる。 |
RBX (EBX, BX, BL, BH) | ベースレジスタ。 |
RSP (ESP/SP) | スタックポインタ。スタックの一番上を示している |
RBP (EBP, BP) | ベースポインタ。スタックの一番下をしてしている。めったに変更されない。 |
RSI (ESI, SI) | ソースレジスタ。ポインタとかを保存 |
RDI (EDI, DI) | デスティネーションレジスタ。なんにでも使う |
フラグレジスタ
EFLAGSと呼ばれる32ビットのレジスタ。
1ビットごと意味がある。
名前 | 何bit目 | 意味 |
CF | 0 | キャリーフラグ。桁上りか桁借りした時にセットされる。 |
PF | 2 | パリティフラグ。2進数で見た時、1の数がが偶数個だったらセット。 |
AF | 4 | 調整フラグ。BCD演算の時、桁上りか桁借りした時にセット。 |
ZF | 6 | ゼロフラグ。結果が0になったらセット。 |
SF | 7 | 符号フラグ。結果がマイナスになったらセットされる。 |
TF | 8 | ラップフラグ。なにこれ |
IF | 9 | 割り込み可能フラグ。割り込みを有効化したいときにセットする。 |
DF | 10 | 方向フラグ。なにこれ |
OF | 11 | オーバーフローフラグ。オーバーフローした時にセットされる。 |
IOPL | 12,13 | I/Oの特権レベルを表す。 |
次は命令とかかな?