英特爾 XScale(R) 技術主題立即數 (AM 1)

語法

#imm

其中:

 imm

將指令中編碼的常數運算元指定為 8 位立即數 ( imm_8 ) 與 4 位立即數 ( rt_imm )。因此,imm 與將 imm_8 循環右移 ( 2*rt_imm ) 位的結果相同。

說明

數據處理運算元“立即數”執行以下操作(偽程式碼說明):

addr_mode = imm_8 Rotate_Right (rt_imm *2)
if rt_imm == 0 then
 shifter_carry_out = C flag
else /* rt_imm != 0 */
 shifter_carry_out = addr_mode[31]

此數據處理運算元是指令中定義的常數運算元。addr_mode 的值是由 8 位立即數循環右移產生的。8 位立即數循環移位到 32 位字中任何偶數位的位置。如果循環移位立即數是零,則移位器的進位是 C 標誌的值,否則它設定為 addr_mode 值的位 [31]。

編碼

31

 

 

28

27

26

25

24

 

 

21

20

19

 

 

16

 condition

 0

 0

 1

 opcode

 S

 op1

15

 

 

12

11

 

 

8

7

 

 

 

 

 

 

0

 dest

 rt_imm

 imm_8

 備註

對於此格式而言,唯一有效的 32 位立即數是可以通過將 8 位立即數循環右移偶數位后得到的那些立即數。
imm 的有些值,可以有多種編碼。如果可以使用多個編碼,則彙編器按照以下方式選擇正確的那個:
如果 imm 介於 0 與 0xFF 之間,則使用帶 rt_imm == 0 的編碼。彙編器必須選擇該編碼。選擇另一種編碼將影響有些指令設定的 C 標誌。
建議選擇 rt_imm 值最小的編碼。此選擇不影響指令功能。

更精確的編碼控制是使用語法直接指定的指令欄位提供的:

#imm_8, rt_amount

其中:

rt_amount = 2*rt_imm

示例

ADC   R0, R11, #1

更多資訊

請參閱定址模式 1:數據處理運算元
請參閱彙編器指令