GCC在一些平台上提供了一个低级运行时库,libgcc.a 或者libgcc_s.so.1。每当需要执行某些过于复杂而无法通过生成内嵌代码来实现的操作时,GCC便会自动生成对该库中的例程的调用。
大多数libgcc
中的例程用来处理目标处理器不能直接执行的算术运算。这包括一些机器上的整数乘除,以及其它一些机器上的所有浮点和定点运算。libgcc
还包括异常处理,以及少数其它操作。
这些例程中有一些能够用机器独立的C来定义。其它的必须为需要它们的处理器使用汇编语言手写。
在一些情况下,GCC还会生成对C库例程的调用,像memcpy
和memset
。GCC可能使用的例程集在Other Builtins中有介绍。
这些例程接受参数并且返回特定机器模式的值,而不是特定的C类型。关于这方面的概念解释,参见Machine Modes。为了便于说明,在这章中浮点类型float
被假设为对应于SFmode
;double
对应于DFmode
;以及long double
对应于TFmode
和XFmode
。类似的,整数类型int
和unsigned int
对应于SImode
;long
和unsigned long
对应于DImode;以及long long
和unsigned long long
对应于TImode
。