ZHCU820Y September 2004 – June 2021
表 7-5 列出了 MSP430 C/C++ 编译器中的所有内在函数运算符。每个内在函数都有一个函数式原型,显示每个参数的预期类型。如果参数类型与参数不匹配,则对参数执行类型转换。编译器的“包含”目录中的 intrinsics.h 文件包含所有受支持内在函数的函数式原型。
更多有关生成的汇编语言助记符的信息,请参阅《MSP430x1xx 系列用户指南》、《MSP430x3xx 系列用户指南》和《MSP430x4xx 系列用户指南》。
内在函数 | 生成的汇编 | |
---|---|---|
unsigned short | __bcd_add_short(unsigned short op1, unsigned short op2); | MOV op1、dst CLRC DADD op2、dst |
unsigned long | __bcd_add_long(unsigned long op1, unsigned long op2); | MOV op1_low、dst_low MOV op1_hi、dst_hi CLRC DADD op2_low、dst_low DADD op2_hi、dst_hi |
unsigned short | __bic_SR_register(unsigned short mask); | BIC mask、SR |
unsigned short | __bic_SR_register_on_exit(unsigned short mask); | BIC mask、saved_SR |
unsigned short | __bis_SR_register(unsigned short mask); | BIS mask、SR |
unsigned short | __bis_SR_register_on_exit(unsigned short mask); | BIS mask、saved_SR |
unsigned long | __data16_read_addr(unsigned short addr); | MOV.W addr、Rx MOVA 0(Rx)、dst |
void | __data16_write_addr (unsigned short addr, unsigned long src); | MOV.W addr、Rx MOVA src、0(Rx) |
unsigned char | __data20_read_char(unsigned long addr);(1) | MOVA addr、Rx MOVX.B 0(Rx)、dst |
unsigned long | __data20_read_long(unsigned long addr);(1) | MOVA addr、Rx MOVX.W 0(Rx)、dst.lo MOVX.W 2(Rx)、dst.hi |
unsigned short | __data20_read_short(unsigned long addr);(1) | MOVA addr、Rx MOVX.W 0(Rx)、dst |
void | __data20_write_char(unsigned long addr, unsigned char src);(1) | MOVA addr、Rx MOVX.B src、0(Rx) |
void | __data20_write_long(unsigned long addr, unsigned long src);(1) | MOVA addr、Rx MOVX.W src.lo、0(Rx) MOVX.W src.hi、2(Rx) |
void | __data20_write_short(unsigned long addr, unsigned short src);(1) | MOVA addr、Rx MOVX.W src、0(Rx) |
void | __delay_cycles(unsigned long); | 请参阅Topic Link Label7.8.4。 |
void | __disable_interrupt(void); 或 __disable_interrupts(void); |
DINT |
void | __enable_interrupt(void); 或 __enable_interrupts(void); |
EINT |
unsigned int | __even_in_range(unsigned int, unsigned int); | 请参阅Topic Link Label6.11.32。 |
uint32_t | __f32_bits_as_u32( float src ) | 将浮点型中的位提取为 32 位寄存器。请参阅Section 7.8.2。 |
uint64_t | __f64_bits_as_u64( double src ) | 将双精度型中的位提取为 64 位寄存器。请参阅Section 7.8.2。 |
unsigned short | __get_interrupt_state(void); | MOV SR、dst |
unsigned short | __get_R4_register(void); /* 已弃用 */ | MOV.W R4、dst |
unsigned short | __get_R5_register(void); /* 已弃用 */ | MOV.W R5、dst |
unsigned short | __get_SP_register(void); | MOV SP、dst |
unsigned short | __get_SR_register(void); | MOV SR、dst |
unsigned short | __get_SR_register_on_exit(void); | MOV saved_SR、dst |
void | __low_power_mode_0(void); | BIS.W #0x18、SR |
void | __low_power_mode_1(void); | BIS.W #0x58、SR |
void | __low_power_mode_2(void); | BIS.W #0x98、SR |
void | __low_power_mode_3(void); | BIS.W #0xD8、SR |
void | __low_power_mode_4(void); | BIS.W #0xF8、SR |
void | __low_power_mode_off_on_exit(void); | BIC.W #0xF0、saved_SR |
void | __never_executed(void); | 请参阅Topic Link Label7.8.5。 |
void | __no_operation(void); | NOP |
void | __op_code(unsigned short); | 对与参数对应的任何指令进行编码。 |
short | __saturated_add_signed_short( short src1, short src2 ); | 对短整型值执行饱和加法的指令。超出有符号短整型范围的值将视情况设置为最大值或最小值。 |
long | __saturated_add_signed_long( long src1, long src2 ); | 对长整型值执行饱和加法的指令。超出有符号长整型范围的值将视情况设置为最大值或最小值。 |
short | __saturated_sub_signed_short( short src1, short src2 ); | 对短整型值执行饱和减法的指令。超出有符号短整型范围的值将视情况设置为最大值或最小值。 |
long | __saturated_sub_signed_long( long src1, long src2 ); | 对长整型值执行饱和减法的指令。超出有符号长整型范围的值将视情况设置为最大值或最小值。 |
void | __set_interrupt_state(unsigned short src); | MOV src、SR |
void | __set_R4_register(unsigned short src); /* deprecated */ | MOV.W src、R4 |
void | __set_R5_register(unsigned short src); /* deprecated */ | MOV.W src、R5 |
void | __set_SP_register(unsigned short src); | MOV src、SP |
unsigned short | __swap_bytes(unsigned short src); | MOV src、dst SWPB dst |
float | __u32_bits_as_f32(uint32_t src) | 将 32 位寄存器打包为浮点型。请参阅Section 7.8.2。 |
double | __u64_bits_as_f64(uint64_t src) | 将 64 位寄存器打包为双精度型。请参阅Section 7.8.2。 |