我正在参加大会课程,以下问题困扰着我。我试图在代码中复制它,但很难在模拟器中重现这种情况。
值5存储在0x0000100。在处理器正在评估 INCB 0x0000100 指令的同一时刻,会引发一个NMI中断,调用一个子程序,它将0x0000100的值乘以2. 0x0000100的最终值是多少?
在处理中断之前,当前指令是否完成,或者是否立即取消,我感到有点困惑。
答案 0 :(得分:2)
NMI处理程序在运行时使用与任何其他代码完全相同的提取,处理和写入周期(您不希望不必要地复制门)。它只是保存处理器状态,将当前程序计数器压入堆栈并将PC更改为中断处理程序。当从中断返回时,它会继续从中断处继续。
如果它允许部分指示怎么办呢?
(并不意味着讽刺 - 我只是找到"为什么"比#34更有趣;")