むむ

GDT って何だったっけ。
IA-32 のマニュアル下巻 3.5.1 節の記述によれば_グローバルなセグメント・ディスクリプタの配列_という理解で良いのか。

gdt:	.quad 0x0000000000000000	/* NULL descriptor */
	.quad 0x00c09a00000007ff	/* 8Mb */
	.quad 0x00c09200000007ff	/* 8Mb */
	.quad 0x0000000000000000	/* TEMPORARY - don't use */
	.fill 252,8,0			/* space for LDT's and TSS's etc */

なカンジで初期化されてるんですが、どっちもベースアドレスが 0 になってます。

頭がこんがらがってました

ええと GDT はセグメンテーションのためのもの、という事か。IA-32 マニュアル下巻の図 3-1 で分かりやすいマンガがある。ええと、セグメント・セレクタとオフセットからベースアドレスとオフセットが取得できてリニアアドレスが求められる、というのがセグメンテーションで、そのリニアアドレスからページディレクトリとページテーブルを使って物理アドレスが取得できます、というのがページングになるのか。

head.s

もうすぐ終わる。