KEIL编译器【C语言编译选项优化等级说明】
参考: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语言编译选项优化等级说明】相关推荐
- KEIL编译器【C语言编译选项优化等级说明】【支持C99(变量声明在执行语句之后)】【反汇编设置】【C语言联合汇编】【use microlib选项】
SYD8801是一款低功耗高性能蓝牙低功耗SOC,集成了高性能2.4GHz射频收发机.32位ARM Cortex-M0处理器.128kB Flash存储器.以及丰富的数字接口.SYD8801片上集成了 ...
- keil优化等级设置
优化级别说明(仅供参考): 则其中的 Code Optimization 栏就是用来设置C51的优化级别.共有9个优化级别(书上这么写的),高优化级别中包含了前面所有的优化级别.现将各个级别说明 ...
- keil优化等级影响STM32 GPIO速度变化
keil优化等级设置为Level 0时,增加或删除部分GPIO翻转的指令,发现GPIO翻转的脉宽会变化. 如l优化等级设置为Level 0时,以下高电平时间为80ns, LL_GPIO_ResetOu ...
- 单片机编程软件很简单(22),keil单片机编程软件优化等级+概念解析
单片机编程软件是单片机使用过程中不可缺少的一环,因此对于单片机编程软件,相关人员应当具备一定了解.往期文章中,小编对单片机编程软件有过诸多介绍.本文对于单片机编程软件的介绍基于两点:1.keil单片机 ...
- keil编译器的优化问题 关键字volatile的使用
void main(void) {unsigned int y=0x1314; unsigned char yh=0,yl=0;initcpu();yl=y%256;//取余数得低8位yh=y/256 ...
- keil c语言编译运行,Keil的c语言编译器
我曾经通过查看反汇编代码对KEILC编译器进行了测试,大概有这么一下内容,也得出一些结论. (1)全局变量:如果程序中定义了全局变量,而且初始值不是0.此时,在程序调到main()函数执行前,除了要进 ...
- 干货:嵌入式C语言源代码优化方案(非编译器优化)
点击上方"大鱼机器人",选择"置顶/星标公众号" 福利干货,第一时间送达! 1.选择合适的算法和数据结构 选择一种合适的数据结构很重要,如果在一堆随机存放的数中 ...
- keil如何看c语言编译器,MDK Keil编译器编译窗口的设置
MDK Keil编译器编译窗口的设置 在使用MDK Keil编译器时会遇到一些和编辑窗户设置相关的问题,如字体的大小.颜色,字符字符串的颜色等.现按照配置(configuation)的顺序归纳如下: ...
- Keil MDK 编译器 AC5 和 AC6 优化选项重要内容和区别
关注.星标公众号,不错过精彩内容 整理:黄工 参考来源:Arm官网 使用过Keil MDK (Arm Compiler 6)编译器V6版本的读者应该发现了一个问题,V6版本速度比V5版本编译速度快很多 ...
最新文章
- div自己移除自己/移除div下面的所有子元素
- Java中 实体类 VO、 PO、DO、DTO、 BO、 QO、DAO、POJO的概念
- 《城市大脑全球标准研究报告2020》摘要内容
- GitLab 已迁移至谷歌云平台,并表示目前运行良好
- iphone android 开发指南 http://mobile.tutsplus.com
- SQL Activity Monitor
- ClickHouse内核分析-MergeTree的Merge和Mutation机制
- Mac安装prometheus+grafana监控
- linux线上CPU100%排查
- 获取cookies的简单代码(总结待续)
- 电影售票系统项目总结
- 局域网传文件_秒杀QQ微信,这3个神器传输文件快10倍
- H5播放器和flash播放器的区别
- java定时器quartz表达式,quartz定时任务cron表达式
- excel随机数_Excel使用小技巧-Excel里快速生成随机数
- 【游戏开发引擎】 实验3:Captain Blaster 2D 滚动射击游戏
- piaget读法_这些手表品牌原来是这么念的!
- 【Python百日进阶-Web开发-Feffery】Day432 - fac实例:使用国内cdn加载静态资源
- Java—九九乘法表
- 基于Linux的WebSphere性能调优与故障诊断
热门文章
- PCB 奥宝LDI 输出自动改周期检测内容
- 2021年度中关村颠覆性技术研发和成果转化项目申报时间及要求,补贴500万元
- [Datasheet] PHY LAN8720网络芯片解读
- FlatBuffers使用详解
- java 编程 pdf linux_Linux编程技术详解.pdf
- 使用PS中的创建剪贴蒙版来做放大镜
- java 所有事件类型以及事件实现的方法
- PythonGUI工具 图片大小转换
- 像Google一样开会 【http://www.isweetriver.com/2010/google-meetings】
- 【每日早报】2019/07/03