C6000 支持未对齐的负载,并使用 _mem8、_memd8 和 _mem4 内在函数存储为 64 位和 32 位值。_lo 和 _hi 内在函数可用于从 64 位 double 变量中提取两个 32 位值。_loll 和 _hill 内在函数可用于从 64 位 long long 变量中提取两个 32 位值。
对于使用 64 位类型的内在函数,等效 C 类型为 long long。进行浮点转换时,不要使用 C 类型 double 变量或编译器调用运行时支持数学函数。以下是访问 64 位和 32 位值的方式:
- 若要在 C 代码中获取 long long 变量的高 32 位,请使用 >> 32 或 _hill( ) 内在函数。
- 若要在 C 代码中获取 long long 变量的低 32 位,请转换为 int 或 unsigned 类型,或使用 _loll 内在函数。
- 若要获得 double 变量(转换为 int)的高 32 位,请使用 _hi( )。
- 若要获得 double 变量(转换为 int)的低 32 位,请使用 _lo( )。
- 若要获得 __float2_t 的高 32 位,请使用 _hif2()。
- 若要获得 __float2_t 的低 32 位,请使用 _lof2()。
- 若要创建 long long 值,请使用 _itoll(int high32bits, int low32bits) 内在函数。
- 若要创建 __float2_t 值,请使用 _ftof2(float high32bits, float low32bits) 内在函数。
Example8-8 展示了 _mem8 内在函数的用法。