ZHCADC3B February 2019 – October 2023
编译器生成对辅助函数的调用以执行编译器需要支持但架构不直接支持的运算,例如在缺少专用硬件的设备上执行浮点运算。这些辅助函数必须在符合 ABI 的任何工具链的 RTS 库中实现。
辅助函数使用前缀 _ _C28x 命名。具有此前缀的任何标识符都将保留供 ABI 使用。
辅助函数遵守标准调用约定。
下表使用 C 表示法和语法指定辅助函数。表中的类型对应于节 2.1中指定的通用数据类型。
表 6-1 中的函数执行各种数学、逻辑和比较运算。
签名 | 说明 |
---|---|
__c28xabi_absll | 返回 long long int 的绝对值。 |
__c28xabi_addd | 将两个双精度浮点数相加。 |
__c28xabi_addf | 将两个单精度浮点数相加。 |
__c28xabi_andll | 两个 long long int 值按位与运算。 |
__c28xabi_cmpd | 比较两个双精度浮点数。 |
__c28xabi_cmpf | 比较两个单精度浮点数。 |
__c28xabi_cmpll | 比较两个 signed long long int 值。 |
__c28xabi_cmpull | 比较两个 unsigned long long int 值。 |
__c28xabi_divd | 将两个双精度浮点数相除。 |
__c28xabi_divf | 将两个单精度浮点数相除。 |
__c28xabi_divi | 将两个 16 位 signed int 相除。 |
__c28xabi_divl | 将两个 32 位 signed int 相除。 |
__c28xabi_divll | 将两个 64 位 signed long long int 值相除。 |
__c28xabi_divu | 将两个 16 位 unsigned int 相除。 |
__c28xabi_divul | 将两个 32 位 unsigned int 相除。 |
__c28xabi_divull | 将两个 64 位 unsigned long long int 值相除。 |
__c28xabi_dtof | 将双精度浮点数转换为单精度浮点数。 |
__c28xabi_dtoi | 将双精度浮点数转换为 16 位 signed int。 |
__c28xabi_dtol | 将双精度浮点数转换为 32 位 signed int。 |
__c28xabi_dtoll | 将双精度浮点数转换为 64 位 signed long long int。 |
__c28xabi_dtou | 将双精度浮点数转换为 16 位 unsigned int。 |
__c28xabi_dtoul | 将双精度浮点数转换为 32 位 unsigned int。 |
__c28xabi_dtoull | 将双精度浮点数转换为 64 位 unsigned long long int。 |
_c28xabi_ftod | 将单精度浮点数转换为双精度浮点数。 |
__c28xabi_ftoi | 将单精度浮点数转换为 16 位 signed int。 |
__c28xabi_ftol | 将单精度浮点数转换为 32 位 signed int。 |
__c28xabi_ftoll | 将单精度浮点数转换为 64 位 signed long long int。 |
__c28xabi_ftou | 将单精度浮点数转换为 16 位 unsigned int。 |
__c28xabi_ftoul | 将单精度浮点数转换为 32 位 unsigned int。 |
__c28xabi_ftoull | 将单精度浮点数转换为 64 位 unsigned long long int。 |
__c28xabi_itod | 将 16 位 signed int 转换为双精度浮点数。 |
__c28xabi_itof | 将 16 位 signed int 转换为单精度浮点数。 |
__c28xabi_lltod | 将 64 位 signed int 转换为双精度浮点数。 |
__c28xabi_lltof | 将 64 位 signed int 转换为单精度浮点数。 |
__c28xabi_ltod | 将 32 位 signed int 转换为双精度浮点数。 |
__c28xabi_ltof | 将 32 位 signed int 转换为单精度浮点数。 |
__c28xabi_modi | 计算有符号 16 位除法的余数。 |
__c28xabi_modl | 计算有符号 32 位除法的余数。 |
_c28xabi_modll | 计算 64 位 signed long long int 除法的余数。 |
__c28xabi_modu | 计算无符号 16 位除法的余数。 |
__c28xabi_modul | 计算无符号 32 位除法的余数。 |
__c28xabi_modull | 计算 64 位 unsigned long long int 除法的余数。 |
__c28xabi_mpyd | 将两个双精度浮点数相乘。 |
__c28xabi_mpyf | 将两个单精度浮点数相乘。 |
__c28xabi_mpyll | 将两个 64 位 signed long long int 相乘。 |
__c28xabi_negd | 对双精度浮点数取反。 |
__c28xabi_negf | 对单精度浮点数取反。 |
__c28xabi_orll | 两个 long long int 值按位或运算。 |
__c28xabi_subd | 从一个双精度浮点数减去另一个双精度浮点数。 |
__c28xabi_subf | 从一个单精度浮点数减去另一个单精度浮点数。 |
__c28xabi_ulltod | 将 64 位 unsigned long long int 转换为双精度浮点数。 |
__c28xabi_ulltof | 将 64 位 unsigned long long int 转换为单精度浮点数。 |
__c28xabi_ultod | 将 32 位 unsigned int 转换为双精度浮点数。 |
__c28xabi_ultof | 将 32 位 unsigned int 转换为单精度浮点数。 |
__c28xabi_utod | 将 16 位 unsigned int 转换为双精度浮点数。 |
__c28xabi_utof | 将 16 位 unsigned int 转换为单精度浮点数。 |
__c28xabi_xorll | 两个 long long int 值按位异或运算。 |