#freeze
●リアルモードからプロテクトモードへの移行
・・・cr0レジスタの最下位ビットに1をセットする

esp・・・スタックポインタ(スタックが使用されているアドレス、「ここまでスタックが
使用されています」というアドレス)
ebp・・・フレームポインタ/ベースポインタ

●フレームポインタ/ベースポインタとは?
・・・ローカル変数などにアクセスする際の基準となるアドレス。
   ここからの相対アドレスでアクセスする。
   関数コール時はフレームポインタ(レジスタ)の値もスタックに積む。
   (呼び出し元のリターンアドレスの前(低位))
   直前の関数のフレームポインタの記録位置が自関数のフレームポインタになる(らしい・・・)
LM '01.11参照
&br;
・・・特定のfunctionのフレームアクセスにおける基準となるスタックのアドレスをロードする
   コールされた関数がスタックにローカル変数をpushする前に
   ESPレジスタの内容をEBPレジスタにコピーする
&br;
・・・EBPレジスタは一般的にはスタックに積んだリターンアドレス(呼出元の戻りアドレス)の
   位置をポイントする。
Intelマニュアル
&br;
&br;
●サブルーチンコール時のスタックの状態
例えば
 main(){
     int hoge=1;
     int foo =2;
     int bar =3;
     sub(hoge,foo,bar);
 }
 sub(int arg1,int arg2,int arg3){
     int a;
     int b;
     int c;
     a=arg1;
     b=arg2;
     c=arg3;
 }

のようなプログラムを考えた場合、スタックの状態は以下のようになる。

(低位)
sub内の内部変数c
sub内の内部変数b
sub内の内部変数a
mainのベースポインタ(スタックの「mainの直前の関数のベースポインタ」の位置を示す)
mainへの戻りアドレス
subへの第1パラメータ
subへの第2パラメータ
subへの第3パラメータ
main内の内部変数bar
main内の内部変数foo
main内の内部変数hoge
mainの直前の関数のベースポインタ
mainの直前の関数への戻りアドレス
(高位)