当前位置:首页 » 编程软件 » 编译优化级别

编译优化级别

发布时间: 2023-09-13 14:53:56

A. keil c51优化等级介绍

一般用优化等级8,其它的别用,容易出事。
编译完之后多留意data,xdata,看有没超出芯片的最大值,
特别是data,不能超过128,甚至太接近128有时也会出问题。
如果data 需要使用到256,则另外的128用idata定义

B. 编译的代码优化

代码优化是指对程序进行多种等价变换,使得从变换后的程序出发,能生成更有效的目标代码。所谓等价,是指不改变程序的运行结果。所谓有效,主要指目标代码运行时间较短,以及占用的存储空间较小。这种变换称为优化。
有两类优化:一类是对语法分析后的中间代码进行优化,它不依赖于具体的计算机;另一类是在生成目标代码时进行的,它在很大程度上依赖于具体的计算机。对于前一类优化,根据它所涉及的程序范围可分为局部优化、循环优化和全局优化三个不同的级别。

C. 如何设置iar优化等级

果在A行设置的断点,单步调试的时候却只能到达A后边的某几行,可能的一个原因就是代码优化的等级太高了,导致编译器实际上没有在A行停顿。
解决办法:
在OPTION下修改优化等级

IAR默认的是最高优化等级。如果程序不大建议不优化。如果优化等级高,那么一些非汇编的延时函数可能无法执行,一些局部变量的值可能在使用过后,即便没有离开自己的作用

D. Dev C++ 编译器选项中的优化级别哪个对应不优化

ide没有优化的功能吧,只有编译器才有,mplab只是环境而以,而编译器是picc或c18啊,他们才有优化的本事

E. atmel studio怎么开启编译优化

AVRStudio 的编译优化级别
2017-01-10 10:30
-00 无优化。
-01 减少代码尺寸和执行时间,不进行需要大量时间的优化。
-02 几乎执行所有优化,而不考虑代码尺寸和执行时间。
-03 执行 -02 所有的优化,以及内联函数,重命名寄存器的优化。
-0S 针对尺寸的优化。执行所有 -02 优化而不增加代码尺寸。
设置方法:
1.不使用外部的makefile
2.使用外部的makefile

F. Qt Creator里如何设置gcc编译的优化等级

不是release优化的问题。如果是直接运行的话,mingwm10.dll、libgcc_s_dw2-1.dll、qtcore4.dll、qtgui4.dll,还有相应的你用到的库都要放在运行目录下,用dependency walker可以看到dll依赖情况。
然后用到的插件比如qmltooling、imageformats等目录也需要拷到运行目录中,这个用工具看不到依赖,只能全拷然后用排除法,有经验之后代码里哪些用到了就知道了。

出现runtime library错误的最大可能性就是运行目录下的插件不完整。

另外有一种解决方法就是把qt改成静态链接,编译进exe,商业版允许这样做,lgpl版的话如果不是自用就有法律风险。

G. 应用编译优化有什么用

应用编译优化的作用是:提高运行能力因为程序优化前,有3个变量需要3个寄存器,一次乘法运算。程序优化后,只有1个变量需要一个寄存器,没有乘法运算。

并且这个优化看起来很微不足道,但实际上用途很广。为了程序的可读性和可维护性,大多数程序员应该还是会选用第一种方式。

写3行程序而不是直接甩下一行int ticks = 491520让后来读程序的人摸不到头脑。有了编译器的优化,程序员既可以写出易读的程序又不必担心性能受影响。

尤其是在嵌入式领域,很多低端芯片根本就没有硬件乘法器,如果程序不做上述优化可能这3行代码需要几十个cycle,优化过后一个cycle就搞定。

应用编译优化的级别:

第一级:代码调整。

代码调整是一种局部的思维方式;基本上不触及算法层级;它面向的是代码,而不是问题; 所以:语句调整,用汇编重写、指令调整、换一种语言实现、换一个编译器、循环展开、参数传递优化等都属于这一级。

第二级:新的视角。

新的视角强调的重点是针对问题的算法;即选择和构造适合于问题的算法。

第三级:表驱动状态机。

将问题抽象为另一种等价的数学模型或假想机器模型,比如构造出某种表驱动状态机;这一级其实是第二级的延伸,只是产生的效果更加明显,但它有其本身的特点。

H. Keil优化及如何设置某段代码不优化

Keil默认会对代码进行优化的

一般情况缺省编译优化设置被设定为8级优化,实际最高可设定为9级优化。
1、Dead code elimination
2、Data overlaying
3、Peephole optimization
4、Register variables
5、Common subexpression elimination
6、Loop rotation
7、Extended Index Access Optimizing
8、Reuse Common Entry Code
9、Common Block Subroutines
如何设定不优化或改变某个文件的优化设置
1、针对某个文件
(1) 右键->Option for File XXXX

(2) 切换到【C51】选项卡
default表示与工程设置一致

2、针对某段代码(局部优化)
#pragma OPTIMIZE(x) x就是你希望的优化级别
举例如下:
#pragma OPTIMIZE(6)
void FunA()
{
}
......
......
#pragma OPTIMIZE(9)
void FunB()
{
}
上面的意思就是说,在void FunA()到void FunB()之前的所有函数,包括FunA在内,都采用6级的优化,而从FunB开始直到之后,只要没碰上#pragma OPTIMIZE,都采用9级优化了。
OPTIMIZE还可以多一个参数,就是speed和size,
用法: #pragma OPTIMIZE(9,speed)或#pragma OPTIMIZE(5,size)
对应的就是9级优化,以速度为主,或5级优化,以空间最小为主。

热点内容
比较与算法 发布:2024-11-19 11:37:48 浏览:914
php直接下载 发布:2024-11-19 11:37:43 浏览:116
伪代码能编译吗 发布:2024-11-19 11:36:59 浏览:140
vimpython语法提示 发布:2024-11-19 11:36:12 浏览:953
2010加密狗 发布:2024-11-19 11:36:07 浏览:801
安卓什么海拔软件好 发布:2024-11-19 11:13:13 浏览:121
数控铣削编程与操作 发布:2024-11-19 11:10:56 浏览:40
暴风影音的源码 发布:2024-11-19 11:10:54 浏览:30
bat代码加密 发布:2024-11-19 10:59:56 浏览:861
微信清除朋友圈缓存 发布:2024-11-19 10:32:08 浏览:139