刘帅嵌入式系统-数据处理指令操作数寻址方式之立即数寻址

刘帅嵌入式系统-数据处理指令操作数寻址方式之立即数寻址

立即数寻址方式 #<immediate>

指令编码格式如下图所示:

刘帅嵌入式系统-数据处理指令操作数寻址方式之立即数寻址

rotate_imm:4位循环右移值。即之前所提到的公式中的移位数。

immed_8:8位常数。参照下面的立即数公式。

刘帅嵌入式系统-数据处理指令操作数寻址方式之立即数寻址

 

指令操作数<shiter_operand>即为立即数#<immediate>,立即数#<immediate>的生成方式之前已经介绍,不在赘述。当rotate_imm = 0时,循环器的进位值(即Carry-out位)为CPSR中的C条件标志;当rotate_imm != 0时,循环器的进位值(即Carry-out位)为操作数<shiter_operand>的最高为bit[31]。

 

指令中操作数寻址操作的伪代码如下:

shifter_operand = imme_8 Rotate_Right (rotate_imm * 2)

if rotate_imm == 0 then

    shifter_carry_out = C flag

else

    shifter_carry_out =shifter_operand[31]

立即数的合法性和编码规则,请查看之前文章中介绍。

 

示例:

    MOV     R0 , #0xFC0    ;R0=0xFC0