x86のレジスタについての簡単なまとめ

x86には8つの汎用レジスタがある。
レジスタには使用目的があるので、それに応じて使い分けることでコードが分かりやすくなるし、命令も最適化される。また同じ命令がたくさん並ぶことになるので、圧縮の効率も上がる。
って http://www.swansontec.com/sregisters.html が言ってます。

名前 英語名 使用目的 用意されている専用命令
EAX Accumulator Register 戻り値や演算など movやxchgやaddやxorなど、移動やスワップや各種計算
EBX Base Register アドレスを指す 特殊なのは16bit-modeのときだけで、32bit-modeのときはただの汎用レジスタ
ECX Count Resister 繰り返しの回数 loopやrepやjcxzなど、繰り返しやジャンプ条件
EDX Data Resister データの一時退避や演算など mulやdivや64bit計算など、EAXだけでは足りないものに使われる。計算に使わせておくと便利
EDI Destination Index 書き込み先アドレス ESIとセット。movsなど、連続して移動する書き込みの際の目的アドレスを格納。ただの汎用レジスタとして使うのはもったいない!
ESI Source Index 読み込み元アドレス/汎用 EDIとセット。movsなど、連続して移動する読み込みの際の目的アドレスを格納。読み込み元がないなら汎用レジスタでもOK
ESP Stack Pointer スタック端 pushすると減って、popすると増える。自動的に。スタック端のアドレスを自動的に表してくれるので、むやみに自分で触らない
EBP Base Pointer フレーム開始位置 引数やローカル変数を指定する際の基準アドレスを格納する。つまり関数呼び出し中は変化しない


元の英文がめっちゃ分かりやすいので、是非読んで。
http://www.swansontec.com/sregisters.html