RDMSR - 從型號專用暫存器讀取

操作碼

指令

說明

0F 32

RDMSR

將 ECX 指定的 MSR 載入到 EDX:EAX

說明

將 ECX 暫存器指定的 64 位型號專用暫存器 (MSR) 的內容載入到暫存器 EDX:EAX。EDX 暫存器中載入 MSR 的高 32 位,EAX 暫存器中載入低 32 位。在讀取的 MSR 中,如果實現的位數小於 64,則返回 EDX:EAX 中未實現的位的值未定義。

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

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

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

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

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

操作

EDX:EAX MSR[ECX];

影響的標誌

無。

保護模式異常

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

實地址模式異常

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

虛 8086 模式異常

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