计算机处理器全面解析:从原理到应用
1. 中央处理器中断与异常机制
1.1 INT n 指令中断
INT n 指令允许通过软件内部生成中断,只需将中断向量号作为操作数提供即可。例如,INT 35 指令会强制隐式调用中断 35 的中断处理程序。可使用 0 到 255 之间的任何中断向量作为该指令的参数。不过,如果使用处理器预定义的 NMI 向量,处理器的响应与正常方式生成的 NMI 中断不同。若在该指令中使用向量号 2(NMI 向量),会调用 NMI 中断处理程序,但处理器的 NMI 处理硬件不会被激活。而且,用 INT n 指令在软件中生成的中断不能被 EFLAGS 寄存器中的 IF 标志屏蔽。
1.2 异常来源
处理器的异常来源主要有三个:
- 处理器检测到的程序错误异常
- 软件生成的异常
- 机器检查异常
当处理器在应用程序、操作系统或执行程序的执行过程中检测到程序错误时,会生成一个或多个异常。Intel 64 和 IA - 32 架构为每个可由处理器检测到的异常定义了一个向量号。异常可分为故障、陷阱和中止。
INTO、INT 3 和 BOUND 指令允许在软件中生成异常,这些指令可在指令流的特定点检查异常条件。例如,INT 3 会导致生成断点异常。INT n 指令可用于在软件中模拟异常,但存在局限性。若 INT n 为架构定义的异常提供向量,处理器会生成指向正确向量的中断以访问异常处理程序,但不会将错误代码压入堆栈。即便相关的硬件生成异常通常会产生错误代码,异常处理程序在处理异常时仍会尝试从堆栈中弹出错误代码,由于未压入错误代码,处理程序会弹出并丢弃 EIP 而非错误代码,这
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



