RDTSC - 讀取時間標籤計數器

操作碼

指令

說明

0F 31

RDTSC

將時間標籤計數器讀入 EDX:EAX

說明

將處理器的時間標籤計數器的當前值載入到 EDX:EAX 暫存器。時間標籤計數器包含在 64 位 MSR 中。MSR 的高 32 位載入到 EDX 暫存器,低 32 位載入到 EAX 暫存器。處理器每時鐘週期遞增時間標籤計數器 MSR 一次,在處理器復位時將它重設為 0。

暫存器 CR4 中的時間標籤禁用 (TSD) 標誌限制 RDTSC 的使用。清除 TSD 標誌時,RDTSC 指令可以在任何特權級別執行;設定此標誌時,指令只能在特權級別 0 執行。在特權級別 0 執行時,時間標籤計數器還可以使用 RDMSR 指令讀取。

RDTSC 指令不是序列化指令。這樣,在讀取計數器之前,它沒有必要等到前面的所有指令都已執行。類似地,在執行讀取操作之前,後面的指令也可以開始執行。

此指令在“英特爾(R) 體系結構”的奔騰(R) 處理器中引入。

操作

IF (CR4.TSD 0) OR ((CR4.TSD 1) AND (CPL=0))
THEN
EDX:EAX TimeStampCounter;
ELSE (* CR4 is 1 and CPL is 1, 2, or 3 *)
#GP(0)
FI;

影響的標誌

無。

保護模式異常

#GP(0) - 如果暫存器 CR4 中的 TSD 標誌設定為 1,並且 CPL 大於 0。

實地址模式異常

#GP - 如果暫存器 CR4 中的 TSD 標誌設定為 1。

虛 8086 模式異常

#GP(0) - 如果暫存器 CR4 中的 TSD 標誌設定為 1。