Atmel Studio 7中-O1优化级别下,如何查看编译器优化的代码部分?
如何在Atmel Studio 7中查看-O1优化的代码变化
当然可以查看编译器在-O1级别下做的优化操作!针对你的场景,我分享几个实用的方法,帮你清晰看到优化后的代码细节:
生成并对比汇编代码
在Atmel Studio的项目属性中,找到ARM/GNU C Compiler的设置,在Miscellaneous选项里添加编译参数-S,这样编译后会生成对应的.s汇编文件。你可以分别在禁用优化(-O0)和启用-O1的情况下生成汇编文件,直接对比两者的差异——比如能看到哪些冗余变量被消除、循环被展开,或者未使用的函数被移除了。启用编译器优化报告
GCC工具链支持输出详细的优化日志,你可以在编译器参数中添加:-fopt-info-optimized:仅输出成功完成的优化操作(比如“内联了函数XXX”“消除了死代码”)-fopt-info-missed:输出编译器尝试优化但没成功的原因(方便理解某些代码没被优化的逻辑)
添加这些参数后,编译时的输出窗口会显示具体的优化信息,精准定位哪些代码被修改了。
调试时查看反汇编视图
启动调试会话后,打开Debug -> Windows -> Disassembly窗口,这里会显示当前执行的机器码对应的汇编指令。你可以分别在-O0和-O1模式下调试,对比同一部分C代码对应的反汇编差异,直观看到优化后的指令精简情况。
另外你提到的二进制文件从12KB降到5.5KB是完全合理的:-O1级别会执行一系列优化,包括死代码删除、常量折叠、函数内联、循环简化,以及移除未使用的全局变量/函数,这些操作都会大幅压缩代码体积。
内容的提问来源于stack exchange,提问作者ABD
相关产品推荐
相关产品推荐

