中断异常的处理

当处理器执行一个对异常或中断处理例程的调用时:

如果将要执行的处理例程特权级数值较小,就进行栈切换。当栈切换发生时:

a.处理程序使用的栈的段选择子和栈指针是从当前运行任务的TSS 中获取的。

处理器把被中断例程的栈段选择子和栈指针压入新的栈中。

b.处理器随后把EFLAGS 寄存器、CS 寄存器、EIP 寄存器的当前值保存进新栈

c.如果异常同时产生了一个错误码,则把它压入栈中,位于EIP 之后。

如果将要执行的处理例程与被中断的例程特权级相同:

a.处理器在当前栈中保存当前EFLAGS 寄存器、CS 寄存器和EIP 寄存器的值  

b.如果异常的错误码也保存在那里,则把它保存在当前栈的EIP 值之后。

原文地址:https://www.cnblogs.com/cdwodm/p/2916100.html