指令格式
bic{条件}{S} Rd,Rn,operand
指令说明
将 Rn 的值与操作数 operand的反码按位逻辑”与”,结果存放到目的寄存器Rd 中(?)
(对于上面这个描述我是存在疑问的。根据实际代码的效果,操作数operand的哪位为1,则Rn对应的位将清除。我不清楚这里的清除是不是变为0,如果是的话,感觉bic指令的作用,是将Rn的值与操作数operand按位逻辑或,然后再将结果按位取反。因为这个指令的说明,是一些人从ARM官方文档翻译下来的,然后被传播,也不知道会不会以讹传讹呢?这个翻译会不会是说“将 Rn 的值与操作数 operand按位取反之后的值进行按位逻辑与?因此我理解为,根据operand哪个位为1,清除Rn对应的位,然后将结果存入Rd。)
关于反码的介绍,见博客原码、反码、补码,以及负数的位操作。
指令示例
bic r0, r0, #0x00002000 @ clear bits 13 (--V-) 0010 0000 0000 0000 bic r0, r0, #0x00000007 @ clear bits 2:0 (-CAM) 0000 0000 0000 0111
指令格式
orr{条件}{S} Rd,Rn,operand
指令说明
orr指令将Rn 的值与操作数operand2按位逻辑”或”,结果存放到目的寄存器Rd 中。
根据operand哪个位为1,将Rn对应的位设置为1,然后将结果存入Rd。
指令示例
orr R0,R0,#0xd3 @将R0的第[7:0]位与b'1101 0011按位或,并保存在R0中
指令格式
eor{条件}{S} Rd,Rn,operand
指令说明
eor指令将Rn 的值与操作数operand2按位逻辑”异或”,相同为0,不同为1,结果存放到目的寄存器Rd 中。