ARM 汇编中的立即数

ARM 汇编中对汇编指令被编码成 32bit 的机器码,其中对于立即数寻址的指令,其机器码构成如下:

31 28 | 27 26 25 | 24    21 | 20 | 19 16 | 15 12 | 11            8 | 7            0 |

cond  |  0   0   1  | opcode |  S |    Rn   |   Rd    | rotate_imm |  immed_8   |

规定 0~11 位表示 shift operand,表示立即数时, #immediate 由这两部分构成:

immediate = immed_8 >> (rotate_imm*2)

也就是说只有满足上述构成条件的立即数才是合法的操作数,那么以下立即数

0x101,0x102,0xFF1,0xFF04,0xFF003,0xFFFFFFFF,0xF000001F

都是非法的!!编译器编译的时候会出现如下警告

error A0092: no immediate rotate operand can be created

 

看来想实现上面的一个立即数,只能通过好几条指令来实现了!

转载于:http://cid-91bd938aa4dc6162.spaces.live.com/Blog/cns!91BD938AA4DC6162!160.entry

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值