assembly 当中断被禁用时,如果我除以0,会发生什么?

tyu7yeag  于 2022-11-13  发布在  其他
关注(0)|答案(1)|浏览(157)

清除IF标志时(中断表未就绪),禁用所有可屏蔽中断。
问题是:
1.如果我触发了异常,会发生什么情况?(例如:div乘以零)
1.如果一个不可屏蔽的中断到达(中断表未准备好),会发生什么?cpu会怎么做?

sauutmhj

sauutmhj1#

IF设置为0(与clipopfiret等一起设置)只会禁止外部中断。
引用the documentation(* 英特尔® 64位和IA-32架构软件开发人员手册第2A卷 *,第3.2章,cli指令):
清除IF标志会导致处理器忽略可屏蔽的外部中断。IF标志以及CLI和STI指令对异常和NMI中断的生成没有影响。
如果中断表(IDT或IVT)配置不充分,则在引发#DE除法异常(中断0)的指令上,可能会出现双重错误,并级联为三重错误。
NMI通常不会发生,除非事先进行了一些设置,以启用将引发NMI的某个事件(例如,启用CPU性能计数器事件)。

相关问题