c语言编译器 代码优化,c编译器高级篇!!搞定c编译器优化

本文深入探讨C编译器的高级部分,尤其是代码优化。介绍了如何选择处理器结构以优化代码,调试选项的影响,优化级别如-O0到-O3的选择,以及AAPCS选项对代码生成的影响。内容包括内联函数、指令重排和冗余代码清除等,旨在帮助开发者提升C语言代码的执行效率和尺寸。
摘要由CSDN通过智能技术生成

对于c编译器,想必大家也有所了解,3款主流c编译器也是活跃在不同人群的PC上。网络上很多文章都止步于对c编译器的介绍,并未探索c编译器更加深层次的内容。而在本文中,将涉及c编译器的高级部分——c编译器及其优化。所以,本文的讲解需要大家具备一定的c编译器基础,以及一定的c语言代码编写能力。

此外,本文的内容的开发环境基于ARM处理器,相关技术同样可在RISC处理器上实现,所以同样需要读者具备最基础的处理器知识。

70a7EGHMh9fnF6yRE5g%2BQJiVhdJn%2FB%2F%2BdU2EU1bNsSpMhoqy4qXz8Vm9eyJE8f4nkNwdGsZIqy5%2FXTX%2BJOnLAfsmBBUVldp7y9cEQLSCQGwnGhCKKBTJmvH9vcGKOA

本文主要讲解C编译器在代码优化时遇到的一些问题。要编写高效的C语言源代码,必须了解C编译器对什么形式的代码有所改动,编译器涉及的处理器结构的限制,以及一些特殊的C编译器的限制。

1.为编译器选择处理器结构

在编译C源文件时,必须为编译器指定正确的处理器类型。这样可以使编译的代码最大限度地利用处理器的硬件结构,如对半字加载(Halfword Load)、存储指令(Store InstrucTIons)和指令调度(InstrucTIon Scheduling)的支持。所以编译程序时,应该尽量准确地告诉编译器该代码是运行在什么类型的处理器上。有些处理器类型编译器是不能直接支持,如SA-1100,这时可以使用与该类型处理器为同一指令集的基本处理器,比如对于SA-100,可以使用StrongARM。

注意指定目标处理器可能使代码与其他ARM处理器不兼容。例如,编译时指定了ARMv6体系结构的代码,可能不能运行在ARM920T的处理器上(如果代码中使用了ARMv6体系结构中特有的指令)。

选择处理器类型可以使用--cpu name编译选项。该选项生成用于特定ARM处理器或体系结构的代码。

如果name是处理器名称。

· 输入名称必须和ARM数据表中所示严格一致,例如ARM7TDMI。该选项不接受通配符字符。有效值是任何 ARM6 或更高版本的 ARM 处理器。

· 选择处理器操作会选择适当的体系结构、浮点单元 (FPU)以及存储结构。

· 某些--cpu选择暗含--fpu选择。例如,当使用--arm选项编译时,--cpu ARM1136JF-S暗含--fpu vfpv2。隐式FPU只覆盖命令行上出现在--cpu选项前面的显式--fpu选项。如果没有指定--fpu选项和--cpu选项,则使用--fpu softvfp。

2.调试选项

如果在编译C源程序时,设置了调试选项,这将很大程度地影响最终代码的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值