位操作内在函数使用GCC for MSP430

时间:2016-07-14 15:20:15

标签: gcc intrinsics msp430

MSP430系列微控制器提供快速位设置/位清除机器指令。

这些位操作comamnds对于某些具有副作用或需要原子访问以防止毛刺或竞争条件的寄存器或I / O操作非常有用。

然而,除了MSP430内核的几乎所有其他特殊功能的许多内在函数之外,GCC不提供位操作指令的内在函数。

为什么? GCC是否仍然发布这些指令,以及发布它们需要哪些C代码?

1 个答案:

答案 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
...