参考:https://blog.csdn.net/chengdong1314/article/details/53463183

KEIL编译器C语言编译选项优化等级说明
摘录于:http://blog.csdn.net/conquerwave/article/details/10450721

原文

0     Minimum optimization. Turns off most optimizations.It gives the best possible debug view and the lowest level of optimization.             近乎不优化,用于调试代码。出现代码行不能设置断点可如此设置试试。
1           Restrictedoptimization. Removes unused inline functions and unused static functions.Turns off optimizations that seriously degrade the debug view. Ifused with --debug, this option gives a satisfactorydebug view with good code density. 部分优化。移除未调用的内联函数和静态函数,关闭debug窗口优化,此状态也能用于调试
2           Highoptimization. If used with--debug, the debug viewmight be less satisfactory because the mapping of object code tosource code is not always clear.

This is the default optimization level.

默认优化等级。如果处于debug状态,部分代码行将不能被调试,具体做了什么优化好像没说
3     Maximumoptimization.-O3 performs the same optimizationsas-O2 however the balance between space and timeoptimizations in the generated code is more heavily weighted towardsspace or time compared with-O2. That is:

  • -O3 -Otime aims to produce fastercode than-O2 -Otime, at the risk of increasingyour image size

  • -O3 -Ospace aims to produce smallercode than-O2 -Ospace, but performance might bedegraded.

In addition, -O3 performs extra optimizationsthat are more aggressive, such as:

  • High-levelscalar optimizations, including loop unrolling, for-O3-Otime. Thiscan give significant performance benefits at a small code size cost,but at the risk of a longer build time.

  • More aggressive inlining and automatic inliningfor-O3 -Otime.

KEIL编译器C语言编译选项优化等级设置不一样造成代码运行的效果完全不一样,下面是SYD8801上运行的实例!

主函数如下:

int main()

{

uint8_tkey_num=0;

gpio_config();

led_close();

timer_0_enable(0x20,timer0_callback); // 32 * 31.25 us = 1ms

__enable_irq();

while(1)

{

*(uint32_t*)GPO_CTRL &=0xffffff00;

*(uint32_t*)GPO_CTRL |=0x000000ff;

}

}

现在的编译器C环境设置如下:

编译、下载、复位后现象如下:

如果编译设置这样改:

编译、下载、复位现象是这样的:

所以一定要注意C编译器的优化选项,还有一点就是C编译器的设置选项也要关注的,虽然这里并没有出错,也就是如下图:

支持C99(变量声明在执行语句之后)

C语言目前已经支持变量声明在执行语句之后的操作了,不过这是C99的内容,KELL默认是不支持C99的,也就是说下面的写法KELL将会报错:

KELL要支持C99可以按照如下操作:

在低版本的KELL中也可以按照如下操作:

KEIL反汇编设置

摘录于:http://www.stmcu.org/module/forum/thread-602450-1-1.html

这里只是学习之用

KEIL编译器【C语言编译选项优化等级说明】相关推荐

  1. KEIL编译器【C语言编译选项优化等级说明】【支持C99(变量声明在执行语句之后)】【反汇编设置】【C语言联合汇编】【use microlib选项】

    SYD8801是一款低功耗高性能蓝牙低功耗SOC,集成了高性能2.4GHz射频收发机.32位ARM Cortex-M0处理器.128kB Flash存储器.以及丰富的数字接口.SYD8801片上集成了 ...

  2. keil优化等级设置

    优化级别说明(仅供参考): 则其中的 Code Optimization    栏就是用来设置C51的优化级别.共有9个优化级别(书上这么写的),高优化级别中包含了前面所有的优化级别.现将各个级别说明 ...

  3. keil优化等级影响STM32 GPIO速度变化

    keil优化等级设置为Level 0时,增加或删除部分GPIO翻转的指令,发现GPIO翻转的脉宽会变化. 如l优化等级设置为Level 0时,以下高电平时间为80ns, LL_GPIO_ResetOu ...

  4. 单片机编程软件很简单(22),keil单片机编程软件优化等级+概念解析

    单片机编程软件是单片机使用过程中不可缺少的一环,因此对于单片机编程软件,相关人员应当具备一定了解.往期文章中,小编对单片机编程软件有过诸多介绍.本文对于单片机编程软件的介绍基于两点:1.keil单片机 ...

  5. keil编译器的优化问题 关键字volatile的使用

    void main(void) {unsigned int y=0x1314; unsigned char yh=0,yl=0;initcpu();yl=y%256;//取余数得低8位yh=y/256 ...

  6. keil c语言编译运行,Keil的c语言编译器

    我曾经通过查看反汇编代码对KEILC编译器进行了测试,大概有这么一下内容,也得出一些结论. (1)全局变量:如果程序中定义了全局变量,而且初始值不是0.此时,在程序调到main()函数执行前,除了要进 ...

  7. 干货:嵌入式C语言源代码优化方案(非编译器优化)

    点击上方"大鱼机器人",选择"置顶/星标公众号" 福利干货,第一时间送达! 1.选择合适的算法和数据结构 选择一种合适的数据结构很重要,如果在一堆随机存放的数中 ...

  8. keil如何看c语言编译器,MDK Keil编译器编译窗口的设置

    MDK Keil编译器编译窗口的设置 在使用MDK Keil编译器时会遇到一些和编辑窗户设置相关的问题,如字体的大小.颜色,字符字符串的颜色等.现按照配置(configuation)的顺序归纳如下: ...

  9. Keil MDK 编译器 AC5 和 AC6 优化选项重要内容和区别

    关注.星标公众号,不错过精彩内容 整理:黄工 参考来源:Arm官网 使用过Keil MDK (Arm Compiler 6)编译器V6版本的读者应该发现了一个问题,V6版本速度比V5版本编译速度快很多 ...

最新文章

  1. div自己移除自己/移除div下面的所有子元素
  2. Java中 实体类 VO、 PO、DO、DTO、 BO、 QO、DAO、POJO的概念
  3. 《城市大脑全球标准研究报告2020》摘要内容
  4. GitLab 已迁移至谷歌云平台,并表示目前运行良好
  5. iphone android 开发指南 http://mobile.tutsplus.com
  6. SQL Activity Monitor
  7. ClickHouse内核分析-MergeTree的Merge和Mutation机制
  8. Mac安装prometheus+grafana监控
  9. linux线上CPU100%排查
  10. 获取cookies的简单代码(总结待续)
  11. 电影售票系统项目总结
  12. 局域网传文件_秒杀QQ微信,这3个神器传输文件快10倍
  13. H5播放器和flash播放器的区别
  14. java定时器quartz表达式,quartz定时任务cron表达式
  15. excel随机数_Excel使用小技巧-Excel里快速生成随机数
  16. 【游戏开发引擎】 实验3:Captain Blaster 2D 滚动射击游戏
  17. piaget读法_这些手表品牌原来是这么念的!
  18. 【Python百日进阶-Web开发-Feffery】Day432 - fac实例:使用国内cdn加载静态资源
  19. Java—九九乘法表
  20. 基于Linux的WebSphere性能调优与故障诊断

热门文章

  1. PCB 奥宝LDI 输出自动改周期检测内容
  2. 2021年度中关村颠覆性技术研发和成果转化项目申报时间及要求,补贴500万元
  3. [Datasheet] PHY LAN8720网络芯片解读
  4. FlatBuffers使用详解
  5. java 编程 pdf linux_Linux编程技术详解.pdf
  6. 使用PS中的创建剪贴蒙版来做放大镜
  7. java 所有事件类型以及事件实现的方法
  8. PythonGUI工具 图片大小转换
  9. 像Google一样开会 【http://www.isweetriver.com/2010/google-meetings】
  10. 【每日早报】2019/07/03