英特爾 XScale(R) 技術主題立即數事後變址 AM(3)

語法

[basereg], #+/-value

其中:

 basereg

指定包含基址的暫存器。

 value

指定 8 位立即數偏移量,與 basereg 的值一起使用,以形成地址。偏移量在 immH(前 4 位)與 immL(后 4 位)中編碼。

說明

定址模式“立即數事後變址”執行以下操作(偽程式碼說明):

addr = basereg
value = (immH << 4) OR immL
if ConditionPassed (condition) then
  if U == 1 then
      basereg = basereg + value
  else/* U == 0 */
      basereg = basereg - value

此定址模式使用基址暫存器 basereg 的值作為記憶體訪問地址。

如果指令中指定的條件與條件程式碼狀態匹配,則立即數偏移量的值會加到基址暫存器 basereg 的值,或從中減去。然後它寫回基址暫存器 basereg

對於帶自動更新指針值的陣列的指針訪問,此定址模式非常有用。

編碼

31

 

 

28

27

26

25

24

23

22

21

20

19

 

 

16

 condition

 0

 0

 0

 0

 U

 1

 0

 L

 basereg

15

 

 

12

11

 

 

8

7

6

5

4

3

 

 

0

 dest

 immH

 1

 S

 H

 1

 immL

L 位表示“載入”( L == 1 ) 或“儲存”( L == 0 ) 指令。

S 位表示有符號 ( S == 1 ) 或無符號 ( S == 0 ) 半字訪問。

H 位表示半字 (H == 1) 或有符號位元組 (H == 0) 訪問。

備註

如果 S 與 H 表示無符號位元組(S == 0H == 0),則指令不使用此定址模式。這是一個乘法指令,即 SWPSWPB 指令,或是算術或載入/儲存指令擴充套件區中未分配的指令。

無符號位元組通過指令 LDRBLDRBTSTRBSTRBT 訪問。這些指令使用定址模式 2。如需有關詳細資訊,請參閱定址模式 2:載入與儲存字或無符號位元組
如果 SL 表示有符號儲存指令(S == 1L== 0),則此指令是載入/儲存擴充套件區中未分配的指令。有符號位元組與半字使用指令 STRBSTRH 儲存。
語法 [ basereg ] 不得視作 [ basereg ], #0 的縮寫。

注意

如果 R15 指定為暫存器 basereg,則結果將會無法預知。

示例

LDRSH    R7, [R5], #7

更多資訊

請參閱定址模式 3:其它載入與儲存
請參閱彙編器指令