Its*_*mmy 5 assembly operating-system interrupt i386
我正在为intel i386开发一个嵌入式程序,我正在试图弄清楚如何使用硬件计时器.我在这里(以及其他地方)读过定时器中断是0x08,但是这个页面(和其他各种来源)说前32个中断是为异常保留的,而中断0x08特别是用于双重故障.这是真的吗?如何在没有操作系统调用的情况下使用程序集或非常低级别的C设置定时器中断处理程序?
我正在开发一个简单的操作系统来学习操作系统开发,所以我无法访问任何类似Linux或系统调用的内容(除非我自己实现系统调用.但是创建一个完全符合POSIX的操作系统远远超出了范围这个项目,所以我宁愿坚持简单,如果有点hacky,解决方案).
如果重要的话,我在QEMU上运行它,而不是实际的物理i386.
大多数人认为这(定时器使用 INT8)是原始 IBM PC 架构中的设计缺陷。为了(部分)保护罪人,最初的 8088 实际上并没有使用这个向量 - 然而,它从一开始就被英特尔标记为“保留”。
在发明保护模式之前,这种冲突并没有真正发生(CPU < 80286 不使用这种双重故障)。在当今的大多数 PC 中,8259 PIC 仍然存在,尽管不是作为单独的芯片,而是隐藏在 PC 芯片组中的某个位置。值得庆幸的是,定时器中断的 INT08 没有刻在硬件中,而是由 PC BIOS 初始化到 PIC 中。因此,保护模式操作系统可以轻松地将 PIC 中断重新映射到其他更方便的位置,以避免冲突。据我所知,只有DOS和其他早期操作系统采用INT8上的定时器中断。
| 归档时间: |
|
| 查看次数: |
338 次 |
| 最近记录: |