GCCINT:可移植性

来自 ChinaUnix Wiki

(重定向自可移植性)

下一页: 接口, 前一页: 提供帮助, 上一级: GCC Internals 中文翻译


2 GCC与移植性

GCC自身的目标是可以移植到任何int类型最小为32位的机器上。它是针对具有平坦(不是分段的)字节寻址的数据地址空间的目标机器。目标ABI可以具有8,16,32或者64位的int类型。char可以大于8位。

GCC通过机器描述来获得目标机器的大部分信息,机器描述给出了每条机器指令的代数方程式表示。这是一种非常整洁的方法来描述目标机。但是当编译器所需要的信息难以通过这种形式来表示的时候,会为机器描述定义一些临时的(ad-hoc)参数。可移植性的目的是为了减少编译器所需要的总工作量,对本身没有什么作用。

GCC不含有机器相关的代码,但是它确实含有依赖于机器参数的代码,例如大小端()以及是否自动递增寻址。在RTL生成过程,经常需要有多种策略来针对特定类别的语法树生成代码,策略适用于不同的组合参数。经常,并不是所有可能的情况会被使用,而只是最常见的一些或者只是遇到的一些。这样的话,一个新的目标机可以需要额外的策略。你可能会知道这种情况发生,因为编译器会调用abort。幸运的是一个新的策略可以通过机器独立的方式添加,并且只会影响到需要它们的目标机器。

个主工具