5日目 その3

ひさびさのHariboteOS。
今回はGDTとIDTの初期化だけど、特にここで書くようなことはないなぁ。
ちょっと目を引いたのはload_gdtr(load_idtr)がスタック上にgdtr(idtr)を作ってそれを読み込んでいたことかな。


ちなみにgasで書くとこう。

.globl load_gdtr	// スタック上にgdtrを作ってロード
load_gdtr:		// void load_gdtr(int limit, int addr)
	movw		4(%esp), %ax	// limit
	movw		%ax, 6(%esp)
	lgdt		6(%esp)
	ret

.globl load_idtr
load_idtr:		// void load_idtr(int limit, int addr)
	movw		4(%esp), %ax	// limit
	movw		%ax, 6(%esp)
	lidt		6(%esp)
	ret