嵌入式数据初始化过程(刘帅嵌入式系统-数据处理指令操作数寻址方式之立即数寻址)(1)

立即数寻址方式 #<immediate>

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

嵌入式数据初始化过程(刘帅嵌入式系统-数据处理指令操作数寻址方式之立即数寻址)(2)

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

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

嵌入式数据初始化过程(刘帅嵌入式系统-数据处理指令操作数寻址方式之立即数寻址)(3)

指令操作数<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

,