gpt4 book ai didi

assembly - IRQ 编号冲突

转载 作者:行者123 更新时间:2023-12-04 16:45:42 26 4
gpt4 key购买 nike

从:
http://software.intel.com/en-us/articles/introduction-to-pc-architecture/

异常编号 10h 对应于“浮点错误”,但软件中断 10h 也对应于“视频支持”BIOS 中断(均在实模式下)。

我错过了什么?

最佳答案

你没有错过任何东西。

8088 处理器(原始 IBM PC 中使用的处理器)仅定义了异常 0、1、2、3 和 4。

因此,IBM 将 0x8 到 0xF 用于硬件中断处理程序,将 0x10 及以上用于 BIOS 例程。出于某种原因,IBM 忽略了这样一个事实,即英特尔非常清楚地为 future 的处理器异常保留了数字 0x5 到 0x1F。

随着时间的推移,需要更多的异常(exception),英特尔继续分配它们。大多数情况下,旧版软件无论如何都不会触发这些异常,而较新的操作系统(在 protected 模式下运行的操作系统)可以分配不同的编号,以免与处理器异常发生冲突。

在旧软件中添加了大量技巧,以便在不破坏太多兼容性的情况下使用较新的处理器功能。虽然我不确定,但我怀疑也许较新的 BIOS 可能试图检测 INT10 是由软件中断触发还是由其 INT10 处理程序中的协处理器触发。

仅供引用,来自 386 程序员手册:

Coprocessor errors vector to interrupt 16. Any 80386 system with a coprocessor must use interrupt vector 16 for the coprocessor error exception. If an 8086/8088 system uses another vector for the 8087 interrupt, both vectors should point to the coprocessor-error exception handler.

关于assembly - IRQ 编号冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1634680/

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