前言
这篇文章对应着邓志老师的《x86/x64体系探索及编程》的第八章,讲述的是实模式,实模式一个是寻址方式不同,另外一个是IVT(Interrupt Vector Table)。我们这篇文章着重分析intel指令的有关实现机制。
四个内存管理寄存器
在Intel卷三 2.4 节中,介绍了四个内存管理的寄存器,这里的内存管理指的是段式内存,分段的内存管理,而不是页式内存管理。同时intel提供了一些指令来管理这些寄存器中的数据,感兴趣可以查阅手册了解更多详情。
IVT(Interrupt Vector Table)
简单来讲一下IVT表,所谓IVT表。在实模式下,IDTR寄存器中32位地址是直接指向IVT表地址,IVT表简单来说是向量表,当发生中断时,其会根据中断号来去相应表中查询得到处理函数的地址,然后跳转到该地址中来进行处理。
而在实模式下,IVT表的地址就是存储在IDTR中,如下图。值得自己注意的是,IVT表的地址存储在寄存器,寄存器,寄存器中!!并不存储在内存的某处,寄存器是归CPU所管理的。