WLDR - 載入 WMMX 暫存器

語法

WLDRlength[condition] destD, address_mode
WLDR destC, address_mode

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

說明

執行從記憶體到數據暫存器 DestD 或控制暫存器 DestC 的載入。
數據暫存器中可以載入 8、16、32 及 64 位數據值。
控制暫存器中只能載入 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 =
AS_offset[9:2]

如果所需的偏移量不滿足以上限制,則必須使用一條單獨的指令(例如,加法/減法)修改地址。

地址應該按載入的數據項的位元組/半字/字/雙字邊界對齊。如果在主核心上啟用未對齊地址陷阱,則應該清除地址的低位;否則將發生未對齊地址陷阱。

如果禁用未對齊陷阱,則發生如下表所示的情況:

 
限定符
未對齊行為
B
從不對齊
H,W,D
無法預知
 

到“英特爾(R) 無線 MMX™”技術控制暫存器的載入僅限於字,並且不得按條件執行。

編碼

WLDR(到“數據暫存器”,且可以有條件執行)
WLDRlength[condition] destD, address_mode

 
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
1
Rn
DestD
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 編碼。

編碼

WLDR(到“控制暫存器”- 無法按條件執行)
WLDR destC, address_mode

 
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
1
Rn
DestC
0001
offset_8
 

子欄位編碼

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

異常

影響的 SIMD 標誌

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

操作

if (B specified) then

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

dest[63:8]=0;

else if (H specified) then

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

dest[63:16]=0;

else if (W specified) then

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

dest[63:32]=0;

else if (D Specifed) then

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

更多資訊

WSTR