linux内核匹配的编译器gcc,GCC - 龙芯开源社区

★ 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编译器新闻

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 添加gsq[c1]指令支持

- gcc-4.4.7 添加gs[u]指令支持

- binutils 修正loongson2f obj无法和loongson3a obj链接问题

- glibc 添加flush denormalized number to zero 优化

gcc4.8.3测试版发布 [2015-03-12]

gcc4.4.7发布 [2014-09-09]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值