WRMSR - 寫入型號專用暫存器

操作碼

指令

說明

0F 30

WRMSR

將 EDX:EAX 中的值寫入 ECX 指定的 MSR

說明

將暫存器 EDX:EAX 的內容寫入 ECX 暫存器指定的 64 位型號專用暫存器 (MSR)。高 32 位從 EDX 複製,低 32 位從 EAX 複製。MSR 中未定義或保留的位總是設定為上次讀取時的值。

此指令必須在特權級別 0 或實地址模式中執行;否則會產生一般保護性異常 #GP(0)。在 ECX 中指定保留的或未實現的 MSR 地址,也會導致一般保護性異常。

使用 WRMSR 指令寫入 MTRR 時,TLB(包括全域性專案)將失效(請參閱“IA-32 英特爾(R) 體系結構軟件開發人員手冊”第 3 卷第 3 章中的“轉譯查詢緩衝區 (TLB)”)。(MTRR 是奔騰(R) Pro 處理器上取決於具體實現的功能)。

MSR 控制用於測試、執行跟蹤、效能監視及機器檢查錯誤等功能。在“IA-32 英特爾(R) 體系結構軟件開發人員手冊”第 3 卷附錄 B“型號專用暫存器 (MSR)”中,列出使用此指令可以寫入的所有 MSR 及其地址。

WRMSR 指令是序列化指令(請參閱“IA-32 英特爾(R) 體系結構軟件開發人員手冊”第 3 卷第 7 章中的“序列化指令”)。

使用此指令之前,應該使用 CPUID 指令確定是否支援 MSR (EDX[5]=1)。

英特爾(R) 體系結構相容性

MSR 與使用 WRMSR 指令讀取 MSR 的功能在“英特爾(R) 體系結構”的奔騰(R) 處理器中引入。在早於奔騰處理器的“英特爾(R) 體系結構”處理器上執行此指令時,會導致操作碼無效異常 #UD。

操作

MSR[ECX] EDX:EAX;

影響的標誌

無。

保護模式異常

#GP(0) - 如果目前特權級別不是 0。如果 ECX 中的值指定保留的或未實現的 MSR 地址。

實地址模式異常

#GP - 如果 ECX 中的值指定保留的或未實現的 MSR 地址。

虛 8086 模式異常

#GP(0) - WRMSR 指令在虛 8086 模式中無法識別。