发信人: kevintz(血仍未冷)
整理人: wenbobo(2003-08-23 11:07:12), 站内信件
|
【 在 zelor 的大作中提到:】
: 只知道是gcc插入的东东,有什么作用?
:
:......
gcc的文档里说主要是三类用途:
1)调试目的。象__builtin_return_address (LEVEL)、__builtin_frame_address (LEVEL)
2)用于GCC内部处理异常和变长参数列表等,这类内建函数不在GCC文档里
说明,而且由于经常变化,所以通常情况下不建议使用。
3)优化目的。例如:
__builtin_constant_p (EXP)
可以确定EXP在编译阶段是否能被确认为一个常量,可以象下面这样应用:
#define Scale_Value(X) \
(__builtin_constant_p (X) ? ((X) * SCALE + OFFSET) : Scale (X))
如果X在编译时能确定为常量,Scale_Value(X)就是(X)*SCALE+OFFSET(其实也
是一个常量),否则就用Scale(X)计算Scale_Value(X)的值,这样能对程序的速度
进行优化。
GCC也提供了一些buildin函数,对应于标准C库里相应的函数
如:`abort', `abs', `alloca', `cos',`cosf', `cosl', `exit',
`_exit', `fabs', `fabsf', `fabsl', `ffs',`labs', `memcmp',
`memcpy', `memset', `sin', `sinf', `sinl', `sqrt',`sqrtf',
`sqrtl', `strcmp', `strcpy', and `strlen'.都有相应的buildin函数
这些都是用于优化程序的。
我所知的也就这些了,具体的没有深入。
|
|