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
|
無
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>] ;