程序员“隐形”寄存器怎么样?

时间:2010-03-14 14:27:09

标签: assembly x86 x86-64 computer-architecture

“Programmer Visible” x86-64寄存器:

alt text http://www.usenix.org/events/bsdcon/full_papers/linden/linden_html/reg.gif

看不见的寄存器怎么样?刚才我了解到MMU寄存器,中断描述符表(IDT)使用这些不可见的寄存器。我正在以艰难的方式学习这些东西。是否有任何资源(书籍/文档/等)可以立即提供完整的图片?

我知道程序员可见的寄存器,并且很容易使用它们进行编程。我只是想了解隐形寄存器及其功能。我想得到一个完整的图片。我在哪里可以获得这些信息?

编辑:

  

我想要全面了解情况。我在哪里可以获得这些信息?

这两本书帮我理解了所有低级细节。

  1. Fundamentals of Computer Organization and Design ~ Sivarama P. Dandamudi - 1 edition (2003)
  2. Computer Organization and Design : The Hardware/Software Interface, 4th Edition, ~ David A. Patterson, John L. Hennessy

2 个答案:

答案 0 :(得分:3)

IDT是一个中断描述符表,从抽象的视图中包含类似的内容,处理器保留了前18个中断,接下来的18个由英特尔保留,以便将来验证芯片的架构......

Interrupt    Handler
   0         divide_by_zero_handler
   1         debug_handler
   ..           ...
   13        general_exception_handler
   14        page_fault_handler
   ..           ...
   18        machine_check_handler

在此上下文中,处理程序是玩具内核的一部分,每个处理程序都在启动时设置,在加载用户区代码之前。 (BIOS是16位代码,也就是实模式代码),内核设置处理程序,切换到32位保护模式,当发出任何中断时,根据中断号执行相应的处理程序。例如,如果生成了中断14,内核将执行page_fault_handler,检查页面是否脏并驻留在磁盘上,然后将该页面加载到内存中,修复地址并清除脏位,执行IRET中断返回指令继续,清除标志....

这是IDT如何工作的抽象视图......幕后有更复杂的事情......取决于内存管理的体系结构和类型,例如分页/平面/保护/虚拟模式寻址方案。 ..

Intel文档中查看英特尔编程的完整视图......

修改 回到过去的DOS(16位代码并且不是很好,确切地受到内存保护),可以将中断处理程序重新路由到您自己的处理程序,从而覆盖原始IDT,例如这样的中断,中断9这是使用getvect(...)setvect(...)调用的键盘中断(在此上下文中是BIOS中断),您也可以处理一些(并非所有处理器中断,特别是IDT 0除以零) )...虽然那些BIOS中断在外观上与处理器中断非常相似,但是它们共享一个共同特征,两者都有中断向量表(当时已知)。这就是由于BIOS中断被重新路由到TSR的处理程序,TSR(Terminate Stay Resident)程序能够在DOS中保持重入...

答案 1 :(得分:2)

您需要研究您感兴趣的特定处理器的处理器参考手册。这是Itanium Processor Reference Manual