| フィールド | 意味 |
ヌルディスクリプタ (null descriptor) | GDTの0番目は使われないことになっている。8byte全部を0で埋める |
| base_... | セグメントの開始アドレス(32bit) 64ビットモードでは無視される |
| limit_... | セグメントのバイト数-1(20bit) 64ビットモードでは無視される |
| type | ディスクリプタタイプ |
| system_segment | 1ならコードまたはデータセグメント |
| descriptor_privilege_level(DPL) | ディスクリプタの権限レベル。値の意味はディスクリプタの種類に応じて少し変わる。
- コードセグメントディスクリプタの場合:CPUの現在の権限レベル(CPL:CurrentPrivilegeLevel)を設定する
CPUの動作権限
| 0 | 特権モード |
| 1 | |
| 2 | |
| 3 | ユーザモード |
|
| present | 1ならディスクリプタが有効。0のディスクリプタを利用しようとすると、CPUが例外を発生させる。 |
| available | OSが自由に使って良いビット(CPUからは利用しないフィールド) |
| long_mode | 1なら64ビットモード用のコードセグメント。0なら互換モード(compatibility mode) |
| default_operation_size | long_modeが1なら必ず0とする。CPUが64ビットモードで動作中はデータセグメントのdefault_operation_sizeの設定は無視されるが、syscall命令と整合性を取るために1を設定することになっている。 データセグメントではlong_modeフィールドが予約フィールドとなっているため、必ず0を設定する必要がある。 |
| granularity | 1ならlimitを4KiB単位として解釈する。(64ビットモードではそもそもlimitが無視される) |