在 ARM 汇编中,立即数由 8 位旋转值编码,这意味着我们只能编码
(0-256)^2n.
现在我的问题是我想清除 r0 的高 16 位并将其替换为存储的半字 r1。但是由于立即数的范围有限,我必须做:-
bic r0, r0, #0xff000000
bic r0, r0, #0x00ff0000
add r0, r0, r1, LSL #16
是否可以用一条指令替换 2 条 bic 指令?0xffff0000 是不可编码的。也许我应该使用另一个逻辑操作来清除高 16 位?
谢谢
编辑:对不起,我忘了说 r1 的前 16 位是空的,我使用的是 ARM7TDMI