196の日記

セキュリティ系の勉強、その他開発メモとか雑談、忘れそうな計算式などを書き溜める場所になっています. githhubはUnity触っていた頃ものがメイン https://github.com/196kakinuma [twitter https://twitter.com/196Ikuchil]

汎用レジスタ ~x86命令セットの場合

レジスタ

CPUに備わっている少量の記憶装置。CPUがデータにアクセスするための最速の手段を提供するらしい。

主な汎用レジスタは以下の通り。



EAX - アキュムレータ

計算処理の遂行と関数からの戻り値の格納に使用。基本的演算はここで行い、乗算除算はここでのみ実行可能。

EDX - データレジスタ

EAXレジスタの拡張で、複雑な計算処理に必要なデータを保持する補助的役割。

ECX - カウントレジスタ

ループ用に使用。数のカウント等もやるらしい。また、ECXは下方向にカウントするらしいので、forで1~10を回す時、10から減らして数えていくらしい。

ESI - ソースインデックス

入力データストリームの位置を保持。読み取り用。

EDI - デスティネーションインデックス

データ処理の結果を格納する位置を指すポインタの役割。書き込み用。

ESP - スタックポインタ

スタックの先頭を指し、関数呼び出しの際には戻りアドレスを指している。

EBP - ベースポインタ

呼び出しスタックの最下部を指す。

EIP

その時、実行されている命令を指す。