发生中断时CPU自动保存的状态是什么?以什么顺序?
答案 0 :(得分:4)
发生中断时CPU自动保存的状态是什么?
保存了一些寄存器;该集由CPU架构定义。它可以保存到堆栈,内存中的固定地址或影子寄存器中。通常这组寄存器很小,如果ISR需要更多,它可以通过实际代码保存它们,而不是CPU自动硬件。 (在“中断进入/退出”中检查Cody Gray的链接。)
以何种顺序?
寄存器保存的顺序,当它们被推送到堆栈时由架构定义。
对于默认体系结构,x86 / x86_64的定义就像(前一个问题中我的答案https://stackoverflow.com/a/38031260/196561中已经列出的第一个链接,带有“* FLAGS,CS,IP”顺序):
https://en.wikibooks.org/wiki/X86_Assembly/Advanced_Interrupts& iret文档http://www.felixcloutier.com/x86/IRET:IRETD.html
iret
指令将重新加载它们以返回给用户。实际逻辑更复杂。 386中有逻辑进入中断http://intel80386.com/386htm/INT.htm和iret http://intel80386.com/386htm/IRET.htm(“操作”)。