★ Gcc编译器
GCC(GNU Compiler Collection,GNU编译器套装),是一套由GNU开发的编程语言编译器。它是一套GNU编译器套装以GPL及LGPL许可证所发行的自由软件,也是GNU计划的关键部分,亦是自由的类Unix及苹果电脑Mac OS X操作系统的标准编译器。GCC原名为GNU C语言编译器,因为它原本只能处理C语言。GCC很快地扩展,变得可处理C++。之后也变得可处理Fortran、Pascal、Objective-C、Java以及Ada与其他语言。GCC4.4开始默认支持龙芯2F架构,GCC4.6开始默认支持龙芯3A架构,龙芯也对外发布优化后的非社区版本。
编译组自2013年7月以来,对龙芯操作系统所使用的gcc4.4.7、4.8.3、4.9.3编译器进行了调优,调优目标是SPEC CPU2000、coremark和Linux内核等,主要手段是通过调整编译器后端的目标指令集,综合使用窥孔、指令拆分、寄存器分配约束、指令调度等优化来生成在龙芯处理器上性能更好的指令序列。主要的优化方法包含:
- 原来Fedora/CentOS系统中安装的gcc默认在O32下使用mips1指令集,在N64下使用mips3指令集,现在使用具有更优性能的mips64选项编译上述两个系统,已经通过测试,新的CentOS已经发布;
- 在N32、N64 ABI下,对函数序跋中的成对64位访存指令,在其地址满足16字节对齐的约束下,进行窥孔优化,使用龙芯464处理器核提供的128位访存指令来完成相同功能;
- 对程序中出现的64位数组指针计算,采用特殊的指令拆分来使用龙芯464处理器核提供的64位三操作数乘法,从而消除hi/lo相关操作以及移位拼接;
- 修改gcc的寄存器分配覆盖集描述,从覆盖集中去掉hi/lo寄存器,避免程序寄存器压力过大时,分配hi/lo作为通用寄存器的暂存寄存器而引发的流水线停顿;
- 优化-march=loongson3a的流水线描述,使得长延迟操作如load/mult/div/mod等尽量提早发射,减少流水线因数据相关造成的停顿;
- 修正gcc编译器在loongson3a/b o32 abi 下不使用浮点奇数号寄存器;
项目负责人Gcc编译组。
社区Gcc编译器源码项目 http://cgit.loongnix.org
★ Gcc编译器新闻
- Loongnix1.0平台高版本gcc-7编译器发布 devtoolset-7 [2019-04-05]
- 龙芯交叉编译器4.9.3发布 交叉编译器 [2018-02-26]
- 龙芯交叉编译器发布 交叉编译器 [2016-03-01]
- - 1. 发布gs464核版本gcc-4.4.7、gcc-4.8.3 32位和64位交叉编译器。
- - 2. 发布ls232核版本gcc-4.3.0 32位交叉编译器。
- GCC编译器在loongson3a/b o32 abi 下不使用浮点奇数号寄存器patch发布 [2015-09-22]
- - 1. 该patch使用与gcc-4.0.x--gcc-4.8.x。patch
- - 2. gcc-5.xx.使用-mno-odd-spreg选项。
- - 3. gcc-4.9.x.可移植gcc-5.xx中的patch,并使用-mno-odd-spreg选项。或使用该patch。
- Fedora13 优化编译工具链发布 [2015-07-17]
- - 更新gcc-4.4.7(用yum install loongson-toolchain安装,并设置export PATH=/opt/toolchain/bin:$PATH)
- - gcc-4.4.7 添加-march=loongson3a支持
- - gcc-4.4.7 添加gs<sl>q[c1]指令支持
- - gcc-4.4.7 添加gs<sl><dwb>[u]指令支持
- - binutils 修正loongson2f obj无法和loongson3a obj链接问题
- - glibc 添加flush denormalized number to zero 优化
- gcc4.8.3测试版发布 [2015-03-12]
- gcc4.4.7发布 [2014-09-09]
|
★ GCC龙芯本地编译器下载
★ GCC交叉编译器下载
★ 文档
★ 支持
|