赵炯 第4章 一个简单的多任务内核实例 设置idt setup_idt

4.9.3 多任务内核程序 head.s中设置idt中断向量表相关的代码如下:
这里写图片描述

这里写图片描述

这里写图片描述

中断门、陷阱门、和任务门的描述符格式如下图:
这里写图片描述


下面对上面的代码简单解释。

第33-40行是设置定时中断门描述符。
定时处理程序是timer_interrupt,属于内核,中断向量是0x08,段选择符就是内核代码段0x08。
根据上图中断们描述符可以得出这个描述符的内容如下:
|00|00|8E|00|
|00|08|$timer_interrupt|

EAX、AX、AH、AL的关系如下:
这里写图片描述

EAX: 0x0008 $timer_interrupt
EDX: 0x0000 8E00
ECX: 0x08
ESI: idt+%exc*8 这就是中断号为8的idt的内存地址
把EAX、EDX的值放入ESI指向的内存处,就设置好了定时中断门描述符。

其余过程类似。

猜你喜欢

转载自blog.csdn.net/familyshizhouna/article/details/80928269