Gcc软件介绍:
Gcc编译器是由GNU开发的一款开源编程语言编译器,其采用GPL许可证,属于自由软件。该编译器广泛支持多种编程语言,包括但不限于C语言、Fortran、Pascal、Objective-C、Java和Ada,以及各种处理器架构上的汇编语言等。通过Gcc编译器,用户能够通过命令行输入程序名和相关命令参数,轻松决定每个输入文件使用的具体语言编译器。此外,用户还可以为输出程序码选择适合特定硬件平台的组合语言编译器,并可选择性地执行连接器,从而生成可执行的程序。
Gcc软件特色
1.高效编译
实现高效的程序编译,提升开发效率。
2.功能全面
拥有完善且全面的编译功能,满足各种编译需求。
3.轻松便捷操作
操作界面人性化设计,为用户提供卓越的使用体验。
Gcc软件功能
前端接口
前端功能旨在生成后端可处理的语法树。我们采用手写的递归语法解析器,直到2004年,程序的语法树结构尚无法与欲产出的处理器架构脱钩。不同前端提供不同的语法树规则。在2005年,引入了两种与语言脱钩的新型态语法树,分别为GENERIC与GIMPLE。这些变化使得语法解析能够生成与语言无关的暂时语法树,然后转换为GENERIC。接下来,通过“gimplifier”技术简化GENERIC,形成基于SSA的简化GIMPLE形式,适用于大多数现代编程语言。
中介接口
通常,编译器作者将语法树放在前端,但这一步骤与语言无关,无需使用语法解析器。因此,我们将此步骤归入中介阶段,包括消解死码、消解重复运算与全域数值重编码等。
后端接口
GCC后端的行为受前处理器宏和特定架构功能的影响,例如字符尺寸、呼叫方式和大小尾序等。后端接口的前半部分使用这些信息确定RTL的生成形式。虽然GCC的RTL理论上不受处理器影响,但在此阶段,抽象指令已转换为目标架构的格式。
GCC的技巧因版本而异,但都包含标准算法。由于GIMPLE语法树形式的增加,RTL的可用情形较少,且缺乏较高阶的信息,因此在这个阶段,GIMPLE相对较不重要。
后端经过一次重读取步骤后,根据描述目标处理器指令集的信息,将抽象暂存器替换为处理器的真实暂存器。这一阶段非常复杂,因为它必须考虑所有GCC可移植平台的处理器指令集规格和技术细节。
后端的最后步骤相当公式化,仅通过简单的子例程将前一阶段得到的汇