OSをつくろうpart3
レス数が950を超えています。1000を超えると書き込みができなくなります。
0950デフォルトの名無しさん
NGNG>■原因
>
>idtrのアドレスがhigeIdt.hで0x6800に設定されていました。
>これじゃあ上書きされてしまいます。
>
>■対処
>
>higeIdt.h:0x6800→0x0500(ここなら安全か??)
配列を使えば,そんなもんだいは解決します。
ソースはこんな感じで
idt_st idt[HANDLER_NUM];
for (int i=0;i < HANDLER_NUM; i++)
{
void* p = handlers[i].handler;
idt[i].offsetL = (int)(p) & 0xFFFF;
idt[i].offsetH = ((int)(p) >> 16 & 0xFFFF ;
idt[i].selector = 0x08;
idt[i].type = 0x8E;
idt[i].unused = IDT_UNUSED;
}
idtr.limit = sizeof(idt_st) * HANDLER_NUM -1;
idtr.highbase = (int)(&idt) >> 16 & 0xffff;
idtr.lowbase = (int)(&idt) & 0xffff;
レス数が950を超えています。1000を超えると書き込みができなくなります。