MSP430系列微控制器提供快速位设置/位清除机器指令。
这些位操作comamnds对于某些具有副作用或需要原子访问以防止毛刺或竞争条件的寄存器或I / O操作非常有用。
然而,除了MSP430内核的几乎所有其他特殊功能的许多内在函数之外,GCC不提供位操作指令的内在函数。
为什么? GCC是否仍然发布这些指令,以及发布它们需要哪些C代码?
答案 0 :(得分:2)
C语言已经允许表达位操作:
$ cat bits.c #include <msp430.h> void main(void) { P1IFG &= ~BIT1; P1IE |= BIT1; } $ msp430-gcc -mmcu=msp430f2013 -Os -S bits.c $ cat bits.s ... ; end of prologue BIC.B #2, &0x0023 BIS.B #2, &0x0025 ; start of epilogue ...