IA-32e
Intel の 64bit 拡張は AMD64 互換かぁ。とは言っても AMD64 アーキテクチャの 64bit モードってどんなのだか知らないんだけど。
各 GPR が 64bit に拡張されていて、かつ 8 つ GPR が増えてるのかー。
動作モードは以下の表の通り。
Operating Mode | Operating System Required | Application Recompile Required | Defaults | Register Extensions | Typical | ||
Address Size(bits) | Operand Size(bits) | GPR Width(Bits) | |||||
Long Mode (IA-32e) | 64-bit Mode | New 64-bit OS | yes | 64 | 32 | yes | 64 |
Compatibility Mode | no | 32 | no | 32 | |||
16 | 16 | 16 | |||||
Legacy Mode | Protected Mode | Legacy 32-bit OS | no | 32 | 32 | no | 32 |
16 | 16 | ||||||
Virtual-8086 Mode | 16 | 16 | 16 | ||||
Real Mode | Legacy 16-bit OS |
- long mode だと仮想 86 モードが使えない?
- long mode だと仮想 86 モードは使えない。VM bit は無視される(Intel #30083401, p1-17, 1.6.3.3.)。
- オペランドサイズが 32bit までしか無い様に見えるけど…
- long mode の 64-bit mode で新しい prefix(REX) が追加されていて、この prefix が付与されると実効オペランドサイズが 64bit になる。LP64 で long/pointer を扱う時に REX prefix が付与される感じなのかな。
- 各モードの遷移
- Real <-> Protected <-> Compatibility <-> 64-bit。VM86 Mode は従来通り Protected Mode と相互に行き来ができる。