ARM アセンブリでは、即値は 8 ビットのローテーションされた値によってエンコードされます。つまり、エンコードできるのは
(0-256)^2n.
今私の問題は、r0 の上位 16 ビットをクリアし、それを格納されたハーフワード r1 に置き換えたいということです。しかし、私がしなければならない即時の範囲が限られているため: -
bic r0, r0, #0xff000000
bic r0, r0, #0x00ff0000
add r0, r0, r1, LSL #16
2 つの bic 命令を 1 つの命令に置き換えることは可能ですか? 0xffff0000 はエンコードできません。おそらく、別の論理演算を使用して上位 16 ビットをクリアする必要がありますか?
ありがとう
編集:申し訳ありませんが、r1 の上位 16 ビットが空であることを忘れていました。ARM7TDMI を使用しています。