我正在學習幾個教程和參考,試圖讓我的內核設置。我在教程中遇到了一些不熟悉的代碼,根本沒有解釋它。這是我聽說代碼映射16 IRQs (0-15)
到ISR位置32-47
:設置IRQ映射
void irq_remap(void)
{
outportb(0x20, 0x11);
outportb(0xA0, 0x11);
outportb(0x21, 0x20);
outportb(0xA1, 0x28);
outportb(0x21, 0x04);
outportb(0xA1, 0x02);
outportb(0x21, 0x01);
outportb(0xA1, 0x01);
outportb(0x21, 0x0);
outportb(0xA1, 0x0);
}
爲outportb()
的代碼如下,但我已經有什麼它做的明察:
void outPortB(unsigned short port, unsigned char data)
{
__asm__ __volatile__ ("outb %1, %0" : : "dN" (port), "a" (data));
}
我應該提到這是在保護模式下的x86架構上。這個源代碼工作正常,我明白它的作用,但我不明白它是如何做到的。有人能向我解釋這裏發生了什麼事情,所以如果我需要擴展這個,我會知道我在做什麼?
哇,這正是我所需要的。謝謝一束! – 2008-11-12 04:45:49