发生中断时x86架构会发生什么?

时间:2010-05-24 14:59:55

标签: assembly interrupt x86-16

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

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

2 个答案:

答案 0 :(得分:8)

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

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

ISR应该执行以下操作:

  • 按下要改变的任何寄存器(或推送所有寄存器)
  • 处理中断
  • 重新启用中断
  • 弹出推送的任何寄存器
  • 使用IRET指令,它会从堆栈中弹出CPU标志和指令指针值(从而返回到发生中断时正在执行的任何操作)。

答案 1 :(得分:2)

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