r (Registers)

r命令會顯示或修改暫存器、浮點暫存器、旗標、虛擬暫存器和固定名稱別名。

User-Mode

[~Thread] r[M Mask|F|X|?] [ Register[:[Num]Type] [= [Value]] ] 
r.

Kernel-Mode

[Processor] r[M Mask|F|X|Y|YI|?] [ Register[:[Num]Type] [= [Value]] ] 
r.

參數

處理器
指定暫存器從中讀取的處理器。 預設值為零。 如果您指定 Processor,則不能包含 Register 參數--所有暫存器都會顯示。 如需語法的詳細資訊,請參閱 多處理器語法。 您只能在核心模式中指定處理器。

執行緒
指定從中讀取暫存器執行緒。 如果您未指定執行緒,則會使用目前的執行緒。 如需語法的詳細資訊,請參閱 執行緒語法。 您只能在使用者模式中指定執行緒。

M遮罩
指定偵錯工具顯示暫存器時要使用的遮罩。 「M」 必須是大寫字母。 Mask 是位的總和,表示有關暫存器顯示的內容。 位的意義取決於處理器和模式 (請參閱下列一節中的表格,以取得詳細資訊) 。 如果您省略 M,則會使用預設遮罩。 您可以使用 Rm (Register Mask) 命令來設定或顯示預設遮罩。

F
顯示浮點暫存器。 「F」 必須是大寫字母。 此選項相當於 M 0x4

X
顯示 SSE XMM 暫存器。 此選項相當於 M 0x40

Y
顯示 AVX YMM 暫存器。 此選項相當於 M 0x200


顯示 AVX YMM 整數暫存器。 此選項相當於 M 0x400

Z
以浮點格式顯示 AVX-512 YMM 暫存器 (zmm0-zmm31) 。


以整數格式顯示 AVX-512 YMM 暫存器 (zmm0-zmm31) 。

K
顯示 AVX-512 Opmask 述詞暫存器 (K0-K7) 。

?
(虛擬暫存器指派只會) 導致虛擬暫存器取得具型別資訊。 允許任何類型。 如需 r? 語法的詳細資訊,請參閱 偵錯工具命令程式範例

註冊
指定要顯示或修改的暫存器、旗標、虛擬暫存器或固定名稱別名。 您不得在參數前面加上 (@) 符號。 如需語法的詳細資訊,請參閱 註冊語法

Num
指定要顯示的元素數目。 如果您省略此參數但包含 Type,則會顯示完整暫存器長度。

類型
指定要顯示中每個暫存器專案的資料格式。 您只能搭配 64 位和 128 位向量暫存器使用 Type 。 您可以指定多個類型。

您可以指定下列一或多個值。

類型 顯示格式

Ib

帶正負號的位元組

ub

不帶正負號的位元組

iw

帶正負號的單字

uw

不帶正負號的字

id

帶正負號的 DWORD

Ud

未簽署的 DWORD

智商

帶正負號的四字

uq

不帶正負號的四字

f

32 位浮點數

d

64 位浮點數

價值
指定要指派給暫存器的值。 如需語法的詳細資訊,請參閱 數值運算式語法

.
顯示目前指令中使用的暫存器。 如果未使用暫存器,則不會顯示任何輸出。

環境

項目 描述
模式 使用者模式、核心模式
目標 即時、損毀傾印
平台 全部

其他資訊

如需暫存器內容和其他內容設定的詳細資訊,請參閱 變更內容

備註

如果您未指定Register,r命令會顯示所有非浮點暫存器,而 rF命令會顯示所有浮點暫存器。 您可以使用 rm (Register Mask) 命令來變更此行為。

如果您指定 Register ,但省略等號 (=) 和 Value 參數,此命令會顯示暫存器目前的值。

如果您指定 Register 和等號 (=) 但省略 Value,此命令會顯示暫存器目前的值,並提示輸入新值。

如果您指定 Register,則等號 (=) ,而 Value,命令會將暫存器變更為包含值。 (如果 無訊息模式 為使用中,您可以省略等號。 您可以使用 sq (Set Quiet Mode) 命令來 開啟無訊息模式。 在核心模式中,您也可以使用 KDQUIET 環境變數.) 開啟無訊息模式

您可以指定多個暫存器,並以逗號分隔。

在使用者模式中, r 命令會顯示與目前線程相關聯的暫存器。 如需執行緒的詳細資訊,請參閱 控制進程和執行緒

在核心模式中, r 命令會顯示與目前 暫存器內容相關聯的暫存器。 您可以將暫存器內容設定為符合特定執行緒、內容記錄或陷阱框架。 實際上只會顯示指定暫存器內容最重要的暫存器,而且您無法變更其值。 如需註冊內容的詳細資訊,請參閱 註冊內容

當您依名稱指定浮點暫存器時,不需要 F 選項。 當您指定單一浮點暫存器時,除了小數點值之外,還會顯示原始十六進位值。

x86 型處理器或 x64 型處理器支援下列 Mask 位。

bit Description

0 1

0x1 0x2

顯示基本整數暫存器。 (設定這兩個位的其中一個或兩者具有相同的效果。)

2

0x4

顯示浮點暫存器。

3

0x8

顯示區段暫存器。

4

0x10

顯示 MMX 暫存器。

5

0x20

顯示偵錯暫存器。 在核心模式中,設定此位也會顯示 CR4 暫存器。

6

0x40

顯示 SSE XMM 暫存器。

7

0x80

(核心模式僅) 顯示控制項暫存器,例如 CR0、CR2、CR3 和 CR8。

8

0x100

(核心模式) 顯示描述項和工作狀態暫存器。

9

0x200

顯示浮點中的 AVX YMM 暫存器。

10

0x400

以十進位整數顯示 AVX YMM 暫存器。

11

0x800

以十進位整數顯示 AVX XMM 暫存器。

下列程式碼範例顯示 x86 型處理器的 r 命令。

在核心模式中,下列命令會顯示處理器 2 的暫存器。

1: kd> 2r 

在使用者模式中,下列命令會顯示執行緒 2 的暫存器。

0:000> ~2 r 

在使用者模式中,下列命令會顯示與執行緒索引順序 (所有線程相關聯的所有 eax 暫存器) 。

0:000> ~* r eax

下列命令會將目前線程的 eax 暫存器設定為0x000000FF。

0:000> r eax=0x000000FF

下列命令會將 st0 暫存器設定為 1.234e+10, (F 是選擇性的) 。

0:000> rF st0=1.234e+10

下列命令會顯示零旗標。

0:000> r zf 

下列命令會將 xmm0 暫存器顯示為 16 個不帶正負號的位元組,然後以雙精確度浮點格式顯示 xmm1 暫存器的完整內容。

0:000> r xmm0:16ub, xmm1:d 

如果目前的語法為 C++,您必須先在登錄前面加上 at 符號 (@) 。 因此,您可以使用下列命令,將 ebx 暫存器複製到 eax 暫存器。

0:000> r eax = @ebx

下列命令會以 r 命令顯示暫存器的方式顯示虛擬暫存器。

0:000> r $teb

您也可以使用 r 命令來建立 固定名稱別名。 這些別名不是暫存器或虛擬暫存器,即使它們與 r 命令相關聯也一樣。 如需這些別名的詳細資訊,請參閱 使用別名

以下是 x86 型處理器上的 r. 命令範例。 呼叫堆疊的最後一個專案在命令本身之前。

01004af3 8bec            mov     ebp,esp
0:000> r.
ebp=0006ffc0  esp=0006ff7c