我正在使用Atom-32位板(AT & T組件),此主板上還沒有軟件。我是否需要neet GDT來構建IDT?
我需要構建GDT來構建/使用IDT嗎?
這個想法只是使用帶APIC定時器的ISR。
/*Change the address of idt_entries table */
fill_interrupt(ISR_Nbr,(unsigned int) isr33, 0x08, 0x8E);
static void fill_interrupt(unsigned char num, unsigned int base, unsigned short sel, unsigned char flags)
{
unsigned short *Interrupt_Address;
/*address = idt_ptr.base + num * 8 byte*/
Interrupt_Address = (unsigned short *)(idt_ptr.base + num*8);
*(Interrupt_Address) = base&0xFFFF;
*(Interrupt_Address+1) = sel;
*(Interrupt_Address+1) = (flags>>8)&0xFF00;
*(Interrupt_Address+1) = (base>>16)&0xFFFF;
}
:10X我會讓一個如此 –
@Alex:一些更新:我發現原子板上有一個BIOS,所以我檢查了IDT和GDT「/ *讀取IDTR */sidt(idt_ptr)/ *讀取GDTR */sgdt(gdt_ptr )「並且他們存在,看起來像BIOS製造它們。我試圖使用它們(見上面的函數fill_interrupt),之後,我用「int $ 0x20」,PFFFF代碼再次崩潰.....: - (....任何線索或備註或問題??? –
@必須做什麼?是的,BIOS可能會加載GDT和IDT,但是實際上是IBM PC標準,在您啓動加載器之前,您會重新進入實模式(無GDT或IDT)。 32位「主板有什麼特別之處?它是用於個人電腦的典型Intel Atom主板嗎? – Earlz