ZHCU876Z July 2001 – October 2023 SM320F28335-EP
CLA 接受除 FAST_FUNC_CALL 之外的 C28x pragma。
无法识别 far 和 ioport 关键字。
对 'MMOV32 MSTF,mem32'
和 'MMOV32 mem32,MSTF'
指令的访问是使用 cregister 关键字提供的。如需访问这些 MSTF 指令,请包含以下声明:
extern cregister volatile unsigned int MSTF;
支持表 10-2 中列出的内在函数。此外,运行时库函数 abs() 和 fabs() 是作为内在函数实现的。
内在函数 | 汇编指令 | 说明 |
---|---|---|
uint32_t __f32_bits_as_u32( float src ); | -- | 将浮点型中的位提取为 32 位寄存器。此内在函数不生成代码;该函数告诉编译器要改变解释位的方式。示例请参阅节 7.6.1。 |
uint64_t __f64_bits_as_u64( double src ); | -- | 将双精度型中的位提取为 64 位寄存器。此内在函数不生成代码;该函数告诉编译器要改变解释位的方式。示例请参阅节 7.6.1。 |
__mdebugstop() | MDEBUGSTOP | 调试停止 |
__meallow() | MEALLOW | 启用对 EALLOW 寄存器的写访问 |
__medis() | MEDIS | 禁用对 EALLOW 寄存器的写访问 |
float __meinvf32(float x); | MEINVF32x | 估算 1/x(精度约为 8 位)。 |
float __meisqrtf32(float x); | MEISQRTF32x | 估算 1/x 的平方根(精度约为 8 位)。牛顿-拉弗森法用于估算平方根。 |
short __mf32toi16r(float src); | MF32TOI16Rdst, src | 将 double 转换为 int 并进行舍入。 |
unsigned short __mf32toui16r(float src); | MF32TOUI16Rdst, src | 将double 转换为无符号 int 并进行舍入。 |
float __mfracf32(float src); | MFRACF32 dst, src | 返回 src 的分数部分。 |
short __mgeq( signed int x, signed int y); | MCMP32 dst, src | 如果 x 大于或等于 y,则返回 1。否则,返回 0。 |
short __mgequ( unsigned int x, unsigned int y); | MCMP32 dst, src | 如果 x 大于或等于 y,则返回 1。否则,返回 0。 |
short __mgt( signed int x, signed int y); | MCMP32 dst, src | 如果 x 大于 y,则返回 1。否则,返回 0。 |
short __mgtu( unsigned int x, unsigned int y); | MCMP32 dst, src | 如果 x 大于 y,则返回 1。否则,返回 0。 |
short __mleq( signed int x, signed int y); | MCMP32 dst, src | 如果 x 小于或等于 y,则返回 1。否则,返回 0。 |
short __mlequ( unsigned int x, unsigned int y); | MCMP32 dst, src | 如果 x 小于或等于 y,则返回 1。否则,返回 0。 |
short __mlt( signed int x, signed int y); | MCMP32 dst, src | 如果 x 小于 y,则返回 1。否则,返回 0。 |
short __mltu( unsigned int x, unsigned int y); | MCMP32 dst, src | 如果 x 小于 y,则返回 1。否则,返回 0。 |
float __mmaxf32( float x, float y); | MMAXF32 dst, src | 返回两个 32 位浮点值的最大值。如果 src > dst,则将 src 复制到 dst。 |
float __mminf32( float x, float y); | MMINF32 dst, src | 返回两个 32 位浮点值的最小值。如果 src < dst,则将 src 复制到 dst。 |
__mnop() | MNOP | CLA 无操作 |
__msetflg(unsigned short flag, unsigned short value) | MSETFLG flag, value | 设置/清除 MSTF 寄存器中的标志。flag 是一个位掩码,用于指示要修改的位。value 提供要分配给这些位的值。有关 MSETFLG 指令和 MSET 寄存器的详细信息,请参阅 CLA 参考指南 (SPRUGE6)。 本例将 RNDF32 标志(位 7)设置为 0,将 TF 标志(位 6)设置为 0,将 NF 标志(位 2)设置为 1。0b 前缀是 GCC 语言扩展,表示这些是二进制数。
|
void __mswapf(float &a, float &b ); | MSWAPFa, b | 交换 a 和 b 的内容。 |
float __sqrt(float x); | MEISQRTF32 x | 估算 1/x 的平方根(精度约为 8 位)。牛顿-拉弗森法用于估算平方根。这是 __meisqrtf32 内在函数的别名。 |
float __u32_bits_as_f32( uint32_t src ); | -- | 将 32 位寄存器打包为浮点型。此内在函数不生成代码;该函数告诉编译器要改变解释位的方式。示例请参阅节 7.6.1。 |
double __u64_bits_as_f64( uint64_t src ); | -- | 将 64 位寄存器打包为双精度型。此内在函数不生成代码;该函数告诉编译器要改变解释位的方式。示例请参阅节 7.6.1。 |
为 CLA 提供了比较内在函数(如 _mlt 和 _mleq),以避免在执行有符号整数比较时可能出现的溢出。
下述内在函数仅在 CLA2 后台任务中可用。后台任务的优先级最低,因此当另一个中断可用时,此任务始终会被中断。这些内在函数可用于临时防止此类中断暂停后台任务。