ZHCU876Z July 2001 – October 2023 SM320F28335-EP
下述内在函数提取浮点值中的位或将位打包成浮点值。不执行任何指令或数据移动;这些内在函数告诉编译器如何解释这些位。有关调用语法,请参阅节 7.6。
下述函数提取浮点数的符号位。其通过使用 __f32_bits_as_u32 内在函数将浮点数解释为 32 位寄存器来实现这一点。此内在函数不会移动存储在 x 中的位;它会告知编译器改变其解释位的方式。
bool sign_bit_set(float x) {
return __f32_bits_as_u32(x) >> 31;
}
使用这些内在函数的另一种方法是将比所需精度更高的浮点常量转换为最低有效尾数位全为零的值。这使编译器能够使用一条指令而不是两条指令将 32 位常量加载到寄存器中。以下代码截断了一个常量:
__u32_bits_as_f32(__f32_bits_as_u32(3.14159f) & 0xffff0000)