我正在学习几个教程和参考,试图让我的内核设置。我在教程中遇到了一些不熟悉的代码,根本没有解释它。这是我听说代码映射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