keil+c语言优化,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反汇编设置
这里只是学习之用
keil+c语言优化,KEIL编译器【C语言编译选项优化等级说明】相关推荐
- KEIL编译器【C语言编译选项优化等级说明】【支持C99(变量声明在执行语句之后)】【反汇编设置】【C语言联合汇编】【use microlib选项】
SYD8801是一款低功耗高性能蓝牙低功耗SOC,集成了高性能2.4GHz射频收发机.32位ARM Cortex-M0处理器.128kB Flash存储器.以及丰富的数字接口.SYD8801片上集成了 ...
- KEIL编译器【C语言编译选项优化等级说明】
参考:https://blog.csdn.net/chengdong1314/article/details/53463183 KEIL编译器C语言编译选项优化等级说明 摘录于:http://blog ...
- Keil MDK 编译器 AC5 和 AC6 优化选项重要内容和区别
关注.星标公众号,不错过精彩内容 整理:黄工 参考来源:Arm官网 使用过Keil MDK (Arm Compiler 6)编译器V6版本的读者应该发现了一个问题,V6版本速度比V5版本编译速度快很多 ...
- 《C++应用程序性能优化::第二章C++语言特性的性能分析》学习和理解
<C++应用程序性能优化::第二章C++语言特性的性能分析>学习和理解 说明:<C++应用程序性能优化> 作者:冯宏华等 2007年版.最近出了新版,看了目录,在前面增加了一章 ...
- java寻优算法_模拟退火算法SA原理及python、java、php、c++语言代码实现TSP旅行商问题,智能优化算法,随机寻优算法,全局最短路径...
模拟退火算法SA原理及python.java.php.c++语言代码实现TSP旅行商问题,智能优化算法,随机寻优算法,全局最短路径 模拟退火算法(Simulated Annealing,SA)最早的思 ...
- Keil MDK 5.30来了,编译性能优化,快速入门Cortex-M55
关注.星标公众号,不错过精彩内容 素材来源:Arm Keil 编辑整理:strongerHuang 早在ARM推出Cortex-M55内核的时候,就放出来一些关于Keil MDK V5.30的消息:C ...
- c语言嵌入式编程修炼 pdf,C语言嵌入式系统编程修炼之性能优化.pdf
C 语言嵌入式系统语言嵌入式系统编程修炼之性能优化编程修炼之性能优化 使用宏定义使用宏定义 在 C 语言中 宏是产生内嵌代码的唯一方法 对于嵌入式系统而言 为了能达到性能 要求 宏是一种很好的代替函数 ...
- php7做了哪些优化,PHP语言学习之PHP7做了哪些优化
本文主要向大家介绍了PHP语言学习之PHP7做了哪些优化,通过具体的内容向大家展示,希望对大家学习php语言有所帮助. 一 zval使用栈内存 在Zend引擎和扩展中,经常要创建一个PHP的变量,底 ...
- vs编译器 printf 控制台输出_【语言教程】通过语言了解GCC编译器工作过程
通过c语言了解GCC编译器如何工作的 比特 下面是c语言初学必看的打印helloworld #include int main(){ printf("hello, world\n" ...
- c语言编译器_学C语言写自己的K语言:编译器词法分析。
词法分析(lexical analysis),是计算机科学中将字符序列转换为记录(Token)序列化的过程.词法分析一般分手动与自动,自动是基于lex,flex词法分析器使用正则式来配置,我们这里将学 ...
最新文章
- 让我们山寨一张Windows Azure Global的壁纸
- linux c implicit declaration of function 警告的解决方法
- java利用htmlparser得到网页html内容
- 深入浅出数据分析:最优化-用Excel求解一个线性规划问题
- php表格好看样式,用html和css代码实现各种表格样式的总结
- 影音先锋云服务器,影音先锋云服务器
- 技能大赛训练题:交换机虚拟化练习
- word替换妙用:批量去除多余空格、空行、换行2020-11-30
- iOS weak关键字实现原理
- 【水晶报表内功心法】--公式、函数与运行时总计 注:(文章来自阿泰博客)
- 量化投资之工具篇一:Backtrader从入门到精通(6)-Indicator类源代码解读(1)
- git提交提示workspace.xml出现conflicted
- Vue前端开发——微信扫码支付
- 深度学习模型轻量化(上)
- markdown编辑器的基础语法
- 前端开发培训哪个比较好
- 怎么制作公司网页教程【网站制作】
- android 怎样删除sim卡中的联系人
- 2022-01-27 使用liquibase管理mysql执行版本
- PHP单例模式连接数据库