9

我正在研究 x86 和实时系统,我有一个问题,那就是:

x86 遵循哪些步骤来处理任何中断?

4

2 回答 2

13

当中断发生时,CPU 会执行以下操作:

  • 将当前地址(指令指针的内容)压入堆栈;另外,推送处理器标志(但不是所有其他处理器寄存器)
  • 跳转到 ISR(中断服务程序)的地址,该地址在中断描述符表中指定。

ISR 应执行以下操作:

  • 推送它打算更改的任何寄存器(或推送所有寄存器)
  • 处理中断
  • 重新启用中断
  • 弹出它推送的任何寄存器
  • 使用 IRET 指令,它从堆栈中弹出 CPU 标志和指令指针值(从而返回到中断发生时正在执行的任何内容)。
于 2010-05-24T15:15:19.050 回答
1

中断描述符表开始。基本上,当发生中断时,流控制会跳转到该表,然后跳转到该表中的任何内容。另外,我相信一旦发生中断,所有寄存器都会被推送,但我不能 100% 确定这一点,因为我已经处理了很长时间了。

于 2010-05-24T15:04:44.287 回答