r (快取器)
r 命令會顯示或修改緩存器、浮點緩存器、旗標、虛擬緩存器和固定名稱別名。
使用者模式
[~Thread] r[M Mask|F|X|?] [ Register[:[Num]Type] [= [Value]] ]
r.
內核模式
[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? 語法的詳細資訊,請參閱調試程式命令程式範例。
註冊
指定要顯示或修改的緩存器、旗標、虛擬緩存器或固定名稱別名。 您不得在此參數前面加上 at (@) 符號。 如需語法的詳細資訊,請參閱 註冊語法。
Num
指定要顯示的元素數目。 如果您省略此參數,但包含 Type,則會顯示完整的緩存器長度。
類型
指定要在 中顯示每個緩存器項目的數據格式。 您只能搭配 64 位和 128 位向量緩存器使用 Type 。 您可以指定多個類型。
您可以指定下列一或多個值。
類型 | 顯示格式 |
---|---|
ib |
已簽署的位元組 |
ub |
未簽署的位元組 |
iw |
帶正負號字 |
微波 |
不帶正負號字 |
id |
帶正負號的 DWORD |
ud |
未簽署的 DWORD |
智商 |
帶正負號的四字 |
uq |
不帶正負號的四字 |
f |
32 位浮點數 |
日 |
64 位浮點數 |
價值
指定要指派給緩存器的值。 如需語法的詳細資訊,請參閱 數值表達式語法。
.
顯示目前指令中使用的緩存器。 如果未使用緩存器,則不會顯示任何輸出。
Environment
項目 | 說明 |
---|---|
模式 | 使用者模式、核心模式 |
目標 | 即時、損毀傾印 |
平台 | 全部 |
其他資訊
如需註冊內容和其他內容設定的詳細資訊,請參閱 變更內容。
備註
如果您未指定 Register,r 命令會顯示所有非浮點緩存器,而 rF 命令會顯示所有浮點緩存器。 您可以使用 rm (Register Mask) 命令來變更此行為。
如果您指定 Register ,但省略等號 (=) 和 Value 參數,命令會顯示緩存器目前的值。
如果您指定 Register 和等號 (=),但省略 Value,命令會顯示緩存器目前的值,並提示輸入新值。
如果您指定 Register、等號 (=), 和 Value,命令會將緩存器變更為包含值。 (如果 無訊息模式 為使用中,您可以省略等號。 您可以使用 sq (Set Quiet Mode) 命令來開啟無訊息模式。 在核心模式中,您也可以使用 KDQUIET 環境變數來開啟無訊息模式。
您可以指定多個緩存器,並以逗號分隔。
在使用者模式中 ,r 命令會顯示與目前線程相關聯的緩存器。 如需線程的詳細資訊,請參閱 控制進程和線程。
在核心模式中 ,r 命令會顯示與目前 緩存器內容相關聯的緩存器。 您可以設定快取器內容,以符合特定線程、內容記錄或陷阱框架。 實際上只會顯示指定緩存器內容最重要的緩存器,而且您無法變更其值。 如需註冊內容的詳細資訊,請參閱 註冊內容。
當您依名稱指定浮點緩存器時, 不需要 F 選項。 當您指定單一浮點緩存器時,除了十進位值之外,也會顯示原始十六進位值。
x86 型處理器或 x64 型處理器支援下列 遮罩 位。
位元 | 值 | 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++,您必須在緩存器前面加上符號 (@)。 因此,您可以使用下列命令,將 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