CLI
清除中断的旗帜
stableVMJITAOTinstruction
编码
| 操作码 | 指令 | Op/En | 64 位 | 兼容/传统 | 说明 |
|---|---|---|---|---|---|
FA | CLI | ZO | 有效 | 有效 | 清除中断旗; 中断旗清除时中断 。 |
实测开销
正在从 arch-data 加载实测数据...
涉及的标志位
IF中断允许
说明
在大多数情况下,CLI在EFLAGS登记册中清除IF旗,没有其他旗帜受到影响. 清除IF旗会导致处理器忽略可遮掩的外部中断. IF旗和CLI和STI指令对例外情况的产生没有影响,NMI中断.
操作方式不同,定义如下:
- PVI 模式( 保护- mode 虚拟中断) : CR0.PE=1,EFLAGS.VM=0,CPL=3,CR4.PVI=1; 3. * VME模式(虚拟 8086 模式扩展) : CR0.PE=1,EFLAGS.VM=1,CR4.VME=1.
如果 IOPL < 3 和 VME 模式或 PVI 模式是活动的,则 CLI 在 EFLAGS 登记册中清除 VIF 旗帜,留下 IF 不受影响.
表3-7显示CLI指令的动作,取决于处理器操作模式,IOPL,和CPL.
Mode Table 3-7. Decision Table for CLI Results CLI Result
Real-address IOPL IF = 0
Protected, not PVI2 X1 IF = 0CPL
Protected, PVI3 < CPL #GP fault
3 IF = 0
Virtual-8086, not VME3 02 VIF = 0
3 IF = 0
Virtual-8086, VME3 02
3 #GP fault
02 IF = 0VIF = 0
NOTES: 1. (中文(简体) ). X = 此设置对指令操作没有影响. 2. 对于本表,"保护模式"适用于CR0.PE=1,EFLAGS.VM=0;它包括兼容模式和64位模式. 3. PVI模式和虚拟 8086 模式各意味着CPL=3.
行动
IF CR0.PE = 0
THEN IF := 0; (* Reset Interrupt Flag *)
ELSE
IF IOPL CPL (* CPL = 3 if EFLAGS.VM = 1 *)
THEN IF := 0; (* Reset Interrupt Flag *)
ELSE
IF VME mode OR PVI mode
THEN VIF := 0; (* Reset Virtual Interrupt Flag *)
ELSE #GP(0);
FI;
FI;
FI;受影响的旗帜
要么IF旗或VIF旗被清除为0. 其他旗帜不受影响.
异常
保护模式
#GP(0) | 如果 CPL 大于 IOPL 且 PVI 模式不活动。如果 CPL 大于 IOPL 且小于 3. |
#UD | 如果使用 LOCK 前缀 。 |
实地址模式
#UD | 如果使用 LOCK 前缀 。 |
虚拟 8086 模式
#GP(0) | 如果IOPL小于3,而VME模式不活动. |
#UD | 如果使用 LOCK 前缀 。 |
兼容模式
| 与保护模式中的例外相同. |
64 位模式
| 与保护模式中的例外相同. |