【发布时间】:2020-07-19 00:10:11
【问题描述】:
我对任务优先级寄存器cr8(Windows 上的IRQL)都很熟悉,当然我也知道如何使用cli 和sti 启用和禁用中断。不过,我对这两者有一些疑问。
首先,清除中断标志cli 是否会“覆盖”存储在 TPR 中的当前值?例如:TPR 是PASSIVE_LEVEL (0)。如果中断被禁用,TPR 中的值是否不再重要?第二:我是从维基百科上读到的:
用 0 加载 TPR 会启用所有外部中断。用 15 (1111b) 加载 TPR 会禁用所有外部中断。
这是否意味着将 TPR 设置为 0xF KzRaiseIrql(HIGH_LEVEL) 等同于 cli?如果我的 TPR 是 0xF 并且中断标志被清除会发生什么?如果启用中断标志怎么办?
【问题讨论】:
标签: assembly x86 x86-64 interrupt windows-kernel