WRMSR
写入模式特定注册
stableVMJITAOTinstruction
编码
| 操作码 | 指令 | Op/En | 64 位 | 兼容/传统 | 说明 |
|---|---|---|---|---|---|
0F 30 | WRMSR | ZO | 有效 | 有效 | 以 EDX 写入值: EAX 到 MSR 由 ECX 指定. |
实测开销
正在从 arch-data 加载实测数据...
说明
将注册EDX:EAX的内容写入ECX注册中指定的64位模型特定注册(MSR). (关于支持Intel 64架构的处理器,RCX的高阶32位被忽略. ) EDX寄存器的内容被复制到选定的MSR的高阶32位,EAX寄存器的内容被复制到MSR的低阶32位. (关于支持Intel 64架构的处理器,RAX和RDX各高序的32比特被忽略. ) MSR中未定义或保留的比特应设定为先前读取的值.
此指令必须在特权级别0或实地址模式执行;否则,生成一般保护例外#GP(0). 在 ECX 中指定一个保留或未执行的 MSR 地址,也会引起一般的保护例外. 如果软件试图在保留的MSR中写入比特,处理器也会生成一般保护例外.
当使用 WRMSR 指令写入 MTRR 时, TLBs 无效 。 这包括全球条目(见英特尔(R)64和IA-32架构软件开发者手册第3A卷第5.10.2节"翻译Lookaside Buffers(TLBs)").
MSR的可验证性控制功能,执行追踪,性能监测和机器检查错误. Intel(R)64和IA-32 Architecture Software开发者手册第4卷第2章的"模式-特定注册(MSR)"列出了所有可以使用本指令写成的MSR及其地址. 注意每个处理器家族都有自己的一套MSR. WRMSR指令是一种序列化指令(见Intel(R)64和IA-32架构软件开发者手册第3A卷第9章中的"序列化指令"). 注意WRMSR到IA32 TSC DEADLINE MSR(MSR指数6E0H)和X2APIC MSR(MSR指数802H到83FH)没有序列化.
CPUID指令在使用此指令之前,应当用于确定MSR是否得到支持(CPUID.01H:EDX[5]=1).
IA-32 架构兼容性
MSR以及使用WRMSR指令读取它们的能力被引入了带有Pentium处理器的IA-32架构. 早于Pentium处理器的IA-32处理器执行此指令,导致操作码例外#UD无效.
行动
MSR[ECX] := EDX:EAX;受影响的旗帜
None.
异常
保护模式
#GP(0) | 如果当前特权级别不是 0。如果值在ECX指定保留或未执行MSR地址。如果值为EDX:EAX设置在MSR由ECX。如果来源登记册中包含一个非名称地址,并且ECX指定下列 mSR 之一: IA32 DS AREA, IA32 FS BASE, IA32 GS BASE, IA32 KERNEL GS BASE, IA32 L-STAR, IA32 SYSENTER EIP, IA32 SYSENTER ESP. 互联网档案馆的存檔,存档日期2014-09-02. |
#UD | 如果使用 LOCK 前缀 。 |
实地址模式
#GP | 如果数值在ECX指定保留或未执行MSR地址。如果值为EDX:EAX设置在MSR由ECX。如果来源登记册中包含一个非名称地址,并且ECX指定下列 mSR 之一: IA32 DS AREA, IA32 FS BASE, IA32 GS BASE, IA32 KERNEL GS BASE, IA32 L-STAR, IA32 SYSENTER EIP, IA32 SYSENTER ESP. 互联网档案馆的存檔,存档日期2014-09-02. |
#UD | 如果使用 LOCK 前缀 。 |
虚拟 8086 模式
#GP(0) | WRMSR指令在虚拟 8086 模式中不被识别. |
兼容模式
| 与保护模式中的例外相同. |
64 位模式
| 与保护模式中的例外相同. |