WSTR - 儲存 WMMX 暫存器

語法

WSTRlength[condition] op1D, address_mode
WSTR op1C, <address_mode>

其中:

length 所需的數據長度,可以由以下字元之一指定:
B -- 載入 8 位位元組數據
H -- 載入 16 位半字數據
W -- 載入 32 位字數據
D -- 載入 64 位雙字數據
condition 可選。16 個條件之一。請參閱條件執行
op1D 源運算元,“英特爾(R) 無線 MMX™”技術數據暫存器
op1C 源運算元,“英特爾(R) 無線 MMX™”技術控制暫存器
address_mode 地址模式 5 - 載入與儲存協處理器
 

說明

執行從源暫存器(op1D 或 op1C)到記憶體位置的儲存,記憶體地址由地址模式參數指定。
數據暫存器 op1D 可以儲存 8、16、32 及 64 位數據值,而控制暫存器 op1C 只儲存 32 位數據值。

指令中指定的任何條件必須與條件程式碼狀態匹配,否則不執行指令。

 
數據地址由“英特爾 XScale(R)”核心產生,其中 <address_mode> 是協處理器暫存器的載入與儲存使用的地址模式 5。此指令將暫存器 Rn 用作基址與偏移量。地址計算中使用的偏移量總是以位元組為單位指定給彙編器。不過,對於 W 與 D 限定符,偏移量必須是字的倍數(即,可以被 4 整除)。此指令允許使用字與雙字載入變體,其偏移量範圍 (0 - 0x3FC) 大於位元組與半字等載入變體的偏移量範圍 (0 - 0xFF)。請參閱下表。
地址模式彙編器偏移量規格與指令編碼
限定符
彙編器
偏移量單位
(AS_offset)
彙編器偏移量
限制
指令
編碼
(offset_8)
B
位元組
AS_offset =< 0xFF
AS_offset[7:0]
H
位元組
AS_offset =< 0xFF
AS_offset[7:0]
W
位元組
AS_offset =< 0x3FC &
AS_offset mod 4 = 0
AS_offset[[9:2]
D
位元組
AS_offset =< 0x3FC &
AS_offset mod 4 = 0
AS_offset[9:2]
 
如果所需的偏移量不滿足以上限制,則必須使用一條單獨的指令(例如,加法/減法)修改地址。

地址應該與要儲存的數據項的位元組/半字/字邊界對齊。如果主核心上啟用未對齊地址陷阱,則應該清除較低的 address 位,否則將發生未對齊地址陷阱。

如果禁用未對齊陷阱,則發生以下情況
限定符
未對齊行為
B
從不對齊
H,W,D
無法預知
 

英特爾® 無線 MMX™ 技術控制暫存器的儲存僅限於字,並且不得按條件執行。

編碼 - WSTR<B,H,W,D>

31
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
Cond
110
P
U
N
W
0
Rn
op1D
000
M
offset_8
 

子欄位編碼

限定符
欄位
B
N,M
0,0
H
N,M
1,0
W
N,M
0,1
D
N,M
1,1
如 V5 相容的“英特爾 XScale(R)”微體系結構中指定的 P、U、W 以及 offset_8 編碼。

編碼 - WSTRW wCx,

31
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
1111
110
P
U
0
W
0
Rn
op1C
0001
offset_8
 

子欄位編碼

如 V5 相容的“英特爾 XScale(R)”微體系結構中指定的 P、U、W 以及 offset_8 編碼。

影響的 SIMD 標誌

不影響 SIMD PSR 標誌 (wCASF) 或“飽和”標誌 (wCSSF)。

操作

if (B specified) then

Mem[<address_mode>] = op1[7:0];

else if (h specified) then

Mem[<address_mode>] = op1[15:0];

else if (W specified) then

Mem[<address_mode>] = op1[31:0];

else if (D specified) then

Mem[<address_mode>] = op1[63:0];

更多資訊

WLDR