c语言编译优化原则,KEIL编译器【C语言编译选项优化等级说明】-程序员宅基地

技术标签: c语言编译优化原则  

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

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

9fec18852cf3b164216bff199ceb52b8.png

原文0Minimum optimization. Turns off most optimizations.It gives the best possible debug view and the lowest level of optimization.近乎不优化,用于调试代码。出现代码行不能设置断点可如此设置试试。1Restrictedoptimization. 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窗口优化,此状态也能用于调试2Highoptimization. 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状态,部分代码行将不能被调试,具体做了什么优化好像没说3Maximumoptimization.-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环境设置如下:

89474d1e689d6e7d17d81d4131829e39.png

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

a97a09d8dd01802b8da4ea2da31d952d.png

如果编译设置这样改:

0da0017c3361023fa37f5f9ecc3f5cd7.png

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

24e9149ad750a3fd5c97ce5723333b28.png

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

3ff8e5baf88c71375d7547e96dc04e79.png

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

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

155d73c43611220701402c16b22fe27a.png

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

55f687203e3dc931a7ee7bd94600b2c6.png

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

742787f9db8f51bc5eb0c90b37e96c66.png

KEIL反汇编设置

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

这里只是学习之用

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_39872222/article/details/117086338

智能推荐

mfc连接mysql增删改查_MFC 数据库编程 增删改查的一个例子-程序员宅基地

文章浏览阅读478次。1.先看下效果图:主界面:一个最简单的1对多的表,一张Article(文章)表,一张Category(类别)表。有添加,修改,删除文章按钮。点击类别编辑按钮就会跳到第二个对话框。点击数据库配置就会跳到第三个对话框。类别编辑的对话框,类别做了防止重复数据添加的功能。数据库配置的对话框,记录会保存到文件中。2.保存数据库信息到文件中。//写一条记录WritePrivateProfileString(L..._mfc连接数据库

Python之7个常见的列表函数_python列表函数-程序员宅基地

文章浏览阅读1.1k次,点赞21次,收藏16次。Python之7个常见的列表函数_python列表函数

VMWare Player 建立的Ubuntu虚拟机突然显示网络连接激活失败_vmware player 网络不能激活-程序员宅基地

文章浏览阅读1.3k次。VMWare Player 建立的Ubuntu虚拟机突然消失网络连接激活失败VMWare Player 建立的Ubuntu虚拟机突然消失网络连接激活失败昨天更新完以后突然无法上网,我就很难受,搞了几个小时,才发现问题所在原因是我昨天更新了player,一般来说我都是喜欢更新,但是这一次就出了问题,更新了player以后,vmware player 的vmnet1和vmnet8就是不正常了,..._vmware player 网络不能激活

ASP.NetCore+Layui 后台管理系统-简介_,net core后台管理系统-程序员宅基地

文章浏览阅读3.3k次,点赞2次,收藏19次。一、简介 1.使用技术: 使用技术 是否完成 备注 后端 ASP.Net Core 2.2 Y MemoryCache Y Log4Net Y EFCore 2.2 Y Redis N 基础操作方法保留,系统中已删除使用reids Swagger Y 前端 layui Y jquery Y echart..._,net core后台管理系统

swift 解析取得json中的数据_switf 取出json数据-程序员宅基地

文章浏览阅读1.4k次。搞了两天解析返回的json数据终于出来了,下面就方向给大家用到了第三的类库 SwiftHTTP (https://github.com/daltoniam/SwiftHTTP)做request get ,post ,put 等SwiftJson(https://github.com/SwiftyJSON/SwiftyJSON) 讲返回的数据解析为json关于第三方类_switf 取出json数据

【Pytorch教程】:过拟合 (Overfitting)_pytorch 过拟合-程序员宅基地

文章浏览阅读3.5k次,点赞3次,收藏16次。Pytorch教程目录Torch and Numpy变量 (Variable)激励函数关系拟合(回归)区分类型 (分类)快速搭建法批训练加速神经网络训练Optimizer优化器卷积神经网络 CNN卷积神经网络(RNN、LSTM)RNN 循环神经网络 (分类)RNN 循环神经网络 (回归)自编码 (Autoencoder)DQN 强化学习生成对抗网络 (GAN)为什么 Torch 是动态的GPU 加速运算什么是过拟合 (Overfitting)目录Pytorch教程目_pytorch 过拟合

随便推点

XNA做的一个游戏.-程序员宅基地

文章浏览阅读164次。有7M,传不到这么大,整2副图出来看哈.还没有整完.其实XNA的性能并没有想象中那么差./Files/liuzhiwei/game.rar需要安装.Net Framework 2.0和XNA Framework 1.0才可运行。 转载于:https://www.cnblogs.com/liuzhiwei/archive/2007/10/21/932332.html..._xna怎么做游戏

k210实现人脸检测(很详细)MaixDock -1|CSDN创作打卡_k210人脸识别例程-程序员宅基地

文章浏览阅读5.5k次,点赞10次,收藏103次。k210实现人脸检测(很详细)MaixDock -1_k210人脸识别例程

Android ScrollView滑动到顶部的三种方式_scrollview滚动到顶部-程序员宅基地

文章浏览阅读8.2k次。一、ScrollView.scrollTo(0,0) 直接置顶,瞬间回到顶部,没有滚动过程,其中Y值可以设置为大于0的值,使Scrollview停在指定位置; 二、ScrollView.fullScroll(View.FOCUS_UP) 类似于手动拖回顶部,有滚动过程; 三、ScrollView.smoothScrollTo(0, 0) 类似于手动拖回顶部,有滚动过程,其中Y值可以设置为大..._scrollview滚动到顶部

工单管理系统是什么?全面解析,提升客户服务效率的利器-程序员宅基地

文章浏览阅读313次,点赞8次,收藏10次。工单管理系统是一种用于跟踪、分派和管理工作任务或服务请求的软件系统。可以帮助组织高效地解决与处理客户服务难题,以确保任务获得适度的解决和跟踪。

SSM婚纱摄影网站java影楼管理系统JAVA|JSP|SSM|Springboot|web计算机毕业设计源码-程序员宅基地

文章浏览阅读62次。1、开发语言:JAVA/JSP(SSH、SSM、Springboot)、Aspnet、PHP、python、安卓。2、含有资料:毕业论文、开题报告、任务书、答辩稿PPT、数据库源代码、讲解视频、3、具体操作:远程调试、源码创建时间修改、bug修改、答辩问题准备。程序视频展示效果可以 点击下方链接 进入B站查看。

A、B两个整数集合,设计一个算法求他们的交集,尽可能的高效。_求a集合和b集合交集的算法-程序员宅基地

文章浏览阅读4.8w次,点赞11次,收藏56次。思路1:排序法  对集合A和集合B进行排序(升序,用快排,平均复杂度O(N*logN)),设置两个指针p和q,同时指向集合A和集合B的最小值,不相等的话移动*p和*q中较小值的指针,相等的话同时移动指针p和q,并且记下相等的数字,为交集的元素之一,依次操作,直到其中一个集合没有元素可比较为止。  优点:操作简单,容易实现。  缺点:使用的排序算法不当,会耗费大量的时间,比如_求a集合和b集合交集的算法

推荐文章

热门文章

相关标签