gpt4 book ai didi

assembly - 程序员 "Invisible"寄存器怎么样?

转载 作者:行者123 更新时间:2023-12-01 01:35:19 27 4
gpt4 key购买 nike

这些是 “程序员可见” x86-64 寄存器:

alt text
(来源:usenix.org)

隐形寄存器呢?刚刚才知道MMU寄存器,Interrupt Descriptor Table(IDT)使用了这些不可见的寄存器。我正在艰难地学习这些东西。是否有任何资源(书籍/文档/等)可以立即为我提供完整的图片?

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

编辑:

I want to get a complete picture. Where can I get this info?



这两本书帮助我了解了所有这些低级细节。
  • Fundamentals of Computer Organization and Design ~ Sivarama P. Dandamudi - 1 edition (2003)
  • Computer Organization and Design : The Hardware/Software Interface, 4th Edition, ~ David A. Patterson, John L. Hennessy
  • 最佳答案

    IDT是一个中断描述符表,从抽象的角度来看,它包含这样的东西,前18个中断由处理器保留,接下来的18个由英特尔保留用于 future 验证芯片架构......

    中断处理程序
    0 除以零处理程序
    1 debug_handler
    …………
    13 general_exception_handler
    14 page_fault_handler
    …………
    18 machine_check_handler

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

    这是 IDT 工作原理的抽象 View ......幕后有更复杂的事情发生......取决于内存管理的架构和类型,例如分页/平面/ protected /虚拟模式寻址方案......

    看看这里 Intel提供了对英特尔编程的出色而透彻的看法的文档...

    编辑:
    回到 DOS 的旧时代(它是 16 位代码,不是很好,完全受内存保护),可以将中断处理程序重新路由到您自己的处理程序,从而覆盖原始 IDT,例如这样的中断,Interrupt 9 这是使用 getvect(...) 的键盘中断(在此上下文中为 BIOS 中断)和 setvect(...)调用,你也可以处理一些(不是所有的处理器中断,特别是,IDT 0 被零除)......尽管这些 BIOS 中断在外观上与处理器中断非常相似,但它们有一个共同的特征,两者都做到有中断向量表(当时已知)。由于 BIOS 中断重新路由到 TSR 的处理程序,这就是 TSR(Terminate Stay Resident)程序能够在 DOS 中保持可重入的方式……

    关于assembly - 程序员 "Invisible"寄存器怎么样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2442457/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com