RDMSR
从模式特定登记册读取
stableVMJITAOTinstruction
编码
| 操作码 | 指令 | Op/En | 64 位 | 兼容/传统 | 说明 |
|---|---|---|---|---|---|
0F 32 | RDMSR | ZO | 有效 | 有效 | 将ECX指定的MSR读入EDX:EAX. |
实测开销
正在从 arch-data 加载实测数据...
说明
将ECX登记册中指定的64位模型特定寄存器(MSR)的内容读入登记器EDX:EAX. (关于支持英特尔64架构的处理器,RCX的高阶32位被忽略. ) EDX寄存器装入了MSR的高阶32位,EAX寄存器装入了低阶32位. (关于支持Intel 64架构的处理器,RAX和RDX的每个高序32位被清除. ) 如果在正在读取的MSR中执行的比特不到64位,那么返回到EDX:EAX中未执行的比特位置的数值是未定义的.
此指令必须在特权级别0或实地址模式执行;否则将生成一般保护例外#GP(0). 在 ECX 中指定一个保留或未执行的 MSR 地址,也会引起一般的保护例外.
MSRs控制功能用于验证性,执行追踪,性能监测以及机器检查错误. Intel(R)64和IA-32 Architecture Software开发者手册第4卷第2章的"模式-特定注册(MSR)"列出了所有可随本指令阅读的MSR及其地址. 注意每个处理器家族都有自己的一套MSR.
CPUID指令在使用此指令之前,应当用于确定MSR是否得到支持(CPUID.01H:EDX[5]=1).
IA-32 架构兼容性
使用RDMSR指令的MSR和阅读能力被引入了IA-32架构,配有Pentium处理器. 早于Pentium处理器的IA-32处理器执行此指令,导致操作码例外#UD无效. 请参看Intel(R)64和IA-32架构软件开发者手册第3C卷第27章中的"VMX非root操作中的改变指令行为",以了解VMX非root操作中此指令行为的更多信息.
行动
EDX:EAX := MSR[ECX];受影响的旗帜
None.
异常
保护模式
#GP(0) | 如果当前特权级别不是 0。 如果 ECX 中的值指定了保留或未执行的 MSR 地址 。 |
#UD | 如果使用 LOCK 前缀 。 |
实地址模式
#GP | 如果 ECX 中的值指定了保留或未执行的 MSR 地址 。 |
#UD | 如果使用 LOCK 前缀 。 |
虚拟 8086 模式
#GP(0) | RDMSR指令在虚拟 8086 模式中不被识别. |
兼容模式
| 与保护模式中的例外相同. |
64 位模式
| 与保护模式中的例外相同. |