ZHCUAQ1F july 2015 – april 2023
运行时支持库包含许多汇编语言函数,为C/C++ 数学运算提供了 C6000 指令集不提供的算术例程,例如整数除法、整数求余数以及浮点运算。
这些例程遵循标准的 C/C++ 调用序列。编译器会在适用时自动添加这些例程;它们并非供您的程序直接调用。
lib/src
源目录中提供了这些函数的源代码。源代码中包含有用于描述函数运算的注释。您可以提取、检查和修改任何数学函数。不过,请务必遵循本章中概述的调用惯例和寄存器内容保存规则。表 8-9总结了用于算术运算的运行时支持函数。
类型 | 函数 | 描述 |
---|---|---|
float | __c6xabi_cvtdf (double) | 将双精度型转换为浮点型 |
int | __c6xabi_fixdi (double) | 将双精度型转换为带符号整数型 |
long | __c6xabi_fixdi (double) | 将双精度型转换为长整型 |
long long | __c6xabi_fixdlli (double) | 将双精度型转换为超长整型 |
uint | __c6xabi_fixdlli (double) | 将双精度型转换为无符号整数型 |
ulong | __c6xabi_fixdul (double) | 将双精度型转换为无符号长整型 |
ulong long | __c6xabi_fixdull (double) | 将双精度型转换为无符号超长整型 |
double | __c6xabi_cvtfd (float) | 将浮点型转换为双精度型 |
int | __c6xabi_fixfi (float) | 将浮点型转换为带符号整数型 |
long | __c6xabi_fixfli (float) | 将浮点型转换为长整型 |
long long | __c6xabi_fixflli (float) | 将浮点型转换为超长整型 |
uint | __c6xabi_fixfu (float) | 将浮点型转换为无符号整数型 |
ulong | __c6xabi_fixful (float) | 将浮点型转换为无符号长整型 |
ulong long | __c6xabi_fixfull (float) | 将浮点型转换为无符号超长整型 |
double | __c6xabi_fltid (int) | 将带符号整数型转换为双精度型 |
float | __c6xabi_fltif (int) | 将带符号整数型转换为浮点型 |
double | __c6xabi_fltud (uint) | 将无符号整数型转换为双精度型 |
float | __c6xabi_fltuf (uint) | 将无符号整数型转换为浮点型 |
double | __c6xabi_fltlid (long) | 将带符号长整型转换为双精度型 |
float | __c6xabi_fltlif (long) | 将带符号长整型转换为浮点型 |
double | __c6xabi_fltuld (ulong) | 将无符号长整型转换为双精度型 |
float | __c6xabi_fltulf (ulong) | 将无符号长整型转换为浮点型 |
double | __c6xabi_fltllid (long long) | 将带符号超长整型转换为双精度型 |
float | __c6xabi_fltllif (long long) | 将带符号超长整型转换为浮点型 |
double | __c6xabi_fltulld (ulong long) | 将无符号超长整型转换为双精度型 |
float | __c6xabi_fltullf (ulong long) | 将无符号超长整型转换为浮点型 |
double | __c6xabi_absd (double) | 取双精度型绝对值 |
float | __c6xabi_absf (float) | 取浮点型绝对值 |
long | __c6xabi_labs (long) | 取长整型绝对值 |
long long | __c6xabi_llabs (long long) | 取超长整型绝对值 |
double | __c6xabi_negd (double) | 双精度型取反值 |
float | __c6xabi_negf (float) | 浮点型取反值 |
long long | __c6xabi_negll (long) | 超长整型取反值 |
ong long | __c6xabi_llshl (long long) | 超长整型左移 |
long long | __c6xabi_llshr (long long) | 超长整型右移 |
ulong long | __c6xabi_llshru (ulong long) | 无符号超长整型右移 |
double | __c6xabi_addd (double, double) | 双精度数加法 |
double | __c6xabi_cmpd (double, double) | 双精度数比较 |
double | __c6xabi_divd (double, double) | 双精度数除法 |
double | __c6xabi_mpyd (double, double) | 双精度数乘法 |
double | __c6xabi_subd (double, double) | 双精度数减法 |
float | __c6xabi_addf (float, float) | 浮点数加法 |
float | __c6xabi_cmpf (float, float) | 浮点数比较 |
float | __c6xabi_divf (float, float) | 浮点数除法 |
float | __c6xabi_mpyf (float, float) | 浮点数乘法 |
float | __c6xabi_subf (float, float) | 浮点数减法 |
int | __c6xabi_divi (int, int) | 带符号整数除法 |
nt | __c6xabi_remi (int, int) | 带符号整数取余 |
uint | __c6xabi_divu (uint, uint) | 无符号整数除法 |
uint | __c6xabi_remu (uint, uint) | 无符号整数取余 |
long | __c6xabi_divli (long, long) | 带符号长整数除法 |
long | __c6xabi_remli (long, long) | 带符号长整数取余 |
ulong | __c6xabi_divul (ulong, ulong) | 无符号长整数除法 |
ulong | __c6xabi_remul (ulong, ulong) | 无符号长整数取余 |
long long | __c6xabi_divlii (long long, long long) | 带符号超长整数除法 |
long long | __c6xabi_remlli (long long, long long) | 带符号超长整数取余 |
ulong long | __c6xabi_mpyll (long long, long long) | 无符号超长整数乘法 |
ulong long | __c6xabi_divull (ulong long, ulong long) | 无符号超长整数除法 |
ulong long | __c6xabi_remull (ulong long, ulong long) | 无符号超长整数取余 |