中断发生或进程调度时,是否需要保存标志寄存器?

我知道当中断发生时所有通用寄存器都被压入堆栈,但是我看不到任何保存标志寄存器的代码.如果标志寄存器损坏,则从中断恢复时,依赖于标志寄存器的汇编指令(如setl)很容易产生错误的结果.

解决方法:

是的,(e / r)标志寄存器需要像这样在上下文切换中保存.

所有中断(硬件和软件,包括异常)都会自动将其保存在堆栈中,而ISR末尾的iret指令将对其进行恢复.

系统调用使用相同或相似的机制并保留寄存器.

调度是由中断或系统调用触发的.因此,所有内容均已覆盖.

上一篇:[解决方案]NuGet打包报错: 'X' already has a dependency defined for 'Y'


下一篇:这种方法好吗?