简单的例子。我们想要在寄存器的最右位写入“01”位。 我们应该分别重置“0”位和设置“1”位吗?有没有办法在一条指令中完成它?
例如,如果寄存器的值为 0x11000002:最右位是“10”,最后应该是 0x11000001:最右位是“01”,其余位保持不变。
我认为你不能比三个指令做得更好:
@ set least 3 bits of R0 to 01
movs r1, #3
bics r0, r1 @ clear least two bits of R0
adds r0, #1 @ set LSB of R0
如果在循环中执行此操作,则可以将每次迭代两条指令的恒定负载提升到循环之外。