只是因为EFLAGS寄存器像开关一样工作吗?那么,当它处于活动状态时,中断是启用的,否则就不是吗?
比如说,在Java程序中,它应该是这样的,
while (switch != 0){
keepRunning;
}
Stop;发布于 2011-06-15 00:34:12
内核将EFLAGS保存在中断堆栈帧中,以便稍后可以恢复中断的任务。EFLAGS是核心在堆栈帧中保存的最小机器状态的一部分,它还包括指令指针(EIP)、代码段(CS),通常还包括用户模式堆栈指针(ESP)。当中断服务例程完成(使用IRET指令)时,内核恢复EFLAGS和堆栈帧中的其余寄存器。
这里的基本原理是,任务可以执行,而不用担心任何随机中断会突然践踏寄存器。这是唯一明智的方法。
发布于 2012-01-09 05:19:07
我相信这样做的原因很简单,因为寄存器是通过中断来修改的。即IE (中断启用)标志将被清除。如果CPU没有推送标志,它将无法修改标志,并且需要额外的状态和额外的指令才能获得此隐藏状态。
https://stackoverflow.com/questions/5792280
复制相似问题