4.1 整数算术例程
整数算术例程用于那些对一些机器模式的算术运算不提供硬件支持的平台上。
4.1.1 算术函数
— Runtime Function: int
__ashlsi3 (
int a, int b)
— Runtime Function: long
__ashldi3 (
long a, int b)
— Runtime Function: long long
__ashlti3 (
long long a, int b)
这些函数返回a左移b位后的结果。
— Runtime Function: int
__ashrsi3 (
int a, int b)
— Runtime Function: long
__ashrdi3 (
long a, int b)
— Runtime Function: long long
__ashrti3 (
long long a, int b)
这些函数返回a算术右移b位后的结果。
— Runtime Function: int
__divsi3 (
int a, int b)
— Runtime Function: long
__divdi3 (
long a, long b)
— Runtime Function: long long
__divti3 (
long long a, long long b)
这些函数返回a和b的有符号除法的商。
— Runtime Function: int
__lshrsi3 (
int a, int b)
— Runtime Function: long
__lshrdi3 (
long a, int b)
— Runtime Function: long long
__lshrti3 (
long long a, int b)
这些函数返回将a逻辑右移b位后的结果。
— Runtime Function: int
__modsi3 (
int a, int b)
— Runtime Function: long
__moddi3 (
long a, long b)
— Runtime Function: long long
__modti3 (
long long a, long long b)
这些函数返回a和b的有符号除法的余数。
— Runtime Function: int
__mulsi3 (
int a, int b)
— Runtime Function: long
__muldi3 (
long a, long b)
— Runtime Function: long long
__multi3 (
long long a, long long b)
这些函数返回a和b的乘积。
— Runtime Function: long
__negdi2 (
long a)
— Runtime Function: long long
__negti2 (
long long a)
这些函数返回a的负数。
— Runtime Function: unsigned int
__udivsi3 (
unsigned int a, unsigned int b)
— Runtime Function: unsigned long
__udivdi3 (
unsigned long a, unsigned long b)
— Runtime Function: unsigned long long
__udivti3 (
unsigned long long a, unsigned long long b)
这些函数返回a和b的无符号除法的商。
— Runtime Function: unsigned long
__udivmoddi3 (
unsigned long a, unsigned long b, unsigned long *c)
— Runtime Function: unsigned long long
__udivti3 (
unsigned long long a, unsigned long long b, unsigned long long *c)
这些函数计算a和b的无符号除法的商和余数。返回值为商,并且余数放在c所指向的变量中。
— Runtime Function: unsigned int
__umodsi3 (
unsigned int a, unsigned int b)
— Runtime Function: unsigned long
__umoddi3 (
unsigned long a, unsigned long b)
— Runtime Function: unsigned long long
__umodti3 (
unsigned long long a, unsigned long long b)
这些函数返回a和b的无符号除法的余数。
4.1.2 比较函数
以下函数实现了整数比较。这些函数实现了低层次的比较,在这之上可以构建更高级别的比较运算符(像小于,大于,或者等于)。返回值位于0到2的范围,使得高级别的比较运算符可以通过测试有符号比较或者无符号比较的返回值来实现。
— Runtime Function: int
__cmpdi2 (
long a, long b)
— Runtime Function: int
__cmpti2 (
long long a, long long b)
这些函数执行一个a和b的有符号比较。如果a小于b,则返回0;如果a大于b,则返回2;如果a和b 相等则返回1。
— Runtime Function: int
__ucmpdi2 (
unsigned long a, unsigned long b)
— Runtime Function: int
__ucmpti2 (
unsigned long long a, unsigned long long b)
这些函数执行一个a和b的无符号比较。如果a小于b,则返回0;如果a大于b,则返回2;如果a和b相等则返回1。
4.1.3 可产生异常的算术函数
以下函数实现了可产生异常的算术运算。这些函数在出现有符号算术溢出时,会调用libc函数abort
。
— Runtime Function: int
__absvsi2 (
int a)
— Runtime Function: long
__absvdi2 (
long a)
这些函数返回a的绝对值。
— Runtime Function: int
__addvsi3 (
int a, int b)
— Runtime Function: long
__addvdi3 (
long a, long b)
这些函数返回a和b的和;也就是a +
b。
— Runtime Function: int
__mulvsi3 (
int a, int b)
— Runtime Function: long
__mulvdi3 (
long a, long b)
这些函数返回a和b的积;也就是a *
b。
— Runtime Function: int
__negvsi2 (
int a)
— Runtime Function: long
__negvdi2 (
long a)
这些函数返回a的负数;也就是-
a。
— Runtime Function: int
__subvsi3 (
int a, int b)
— Runtime Function: long
__subvdi3 (
long a, long b)
这些函数返回a和b的差;也就是a -
b。
4.1.4 位运算
— Runtime Function: int
__clzsi2 (
int a)
— Runtime Function: int
__clzdi2 (
long a)
— Runtime Function: int
__clzti2 (
long long a)
这些函数返回a中从最高有效位开始的前导0位的数目。如果a为0,则结果未定义。
— Runtime Function: int
__ctzsi2 (
int a)
— Runtime Function: int
__ctzdi2 (
long a)
— Runtime Function: int
__ctzti2 (
long long a)
这些函数返回a中从最低有效位开始的尾部0位的数目。如果a为0,则结果未定义。
— Runtime Function: int
__ffsdi2 (
long a)
— Runtime Function: int
__ffsti2 (
long long a)
这些函数返回a中最低有效1位的索引,或者a为0时返回0。最低有效位的索引为1。
— Runtime Function: int
__paritysi2 (
int a)
— Runtime Function: int
__paritydi2 (
long a)
— Runtime Function: int
__parityti2 (
long long a)
如果a中置位的数目是偶数,则这些函数返回0,否则返回1。
— Runtime Function: int
__popcountsi2 (
int a)
— Runtime Function: int
__popcountdi2 (
long a)
— Runtime Function: int
__popcountti2 (
long long a)
这些函数返回在a中置位的数目。
— Runtime Function: int32_t
__bswapsi2 (
int32_t a)
— Runtime Function: int64_t
__bswapdi2 (
int64_t a)
这些函数返回a的字节交换。