当前位置:首页 > 技术心得 > 正文内容

IAR STM8 #pragma optimize 指令

xjtudll7年前 (2017-06-18)技术心得23360

参考资料:http://blog.csdn.net/niepangu/article/details/38066319

#pragma optimize= none  //one of none, low, medium, high, size, or speed放在被优化函数前 
#pragma optimize 指令
格式:
#pragma optimize=token token token

我在IAR STM8里尝试,发现只能使用none, low, medium, high, size,  speed,且区分大小写。

不能用 s 9之类的,会报警:

f158bb59-a95a-490a-afd9-25fadd7b8c88

Warning[Go013]: Deprecated optimization level "9" encountered in #pragma optimize, please use one of none, low, medium, high, size, or speed

sshot-1_2

后面是参考文献介绍的,我尝试貌似不对,也有可能理解错误。

where token is one or more of the following:
s Optimizes for speed
z Optimizes for size
2|3|6|9 Specifies level of optimization
no_cse Turns off common sub-expression elimination
no_inline Turns off function inlining
no_unroll Turns off loop unrolling
no_code_motion Turns off code motion.
The #pragma optimize directive is used for decreasing the optimization level or for
turning off some specific optimizations. This #pragma directive only affects the
function that follows immediately after the directive.
Notice that it is not possible to optimize for speed and size at the same time. Only one
of the s and z tokens can be used.
Note: If you use the #pragma optimize directive to specify an optimization level that
is higher than the optimization level you specify using a compiler option, the #pragma
directive is ignored.
Example
#pragma optimize=s 9
int small_and_used_often()
{
...
}
#pragma optimize=z 9
int big_and_seldom_used()
{
...
}
/*======================================================================================
速度优化选项:
-s[2|3|6|9]
Use this option to make the compiler optimize the code for maximum execution speed.
If no optimization option is specified, the compiler will use the size optimization -z2
by default. If the -s option is used without specifying the optimization level, speed
optimization at level 2 is used by default.
*The most important difference between -s2 and -s3 is that at level 2, all non-static
variables will live during their entire scope.
大小优化选项
-z[2|3|6|9]
Use this option to make the compiler optimize the code for minimum size. If no
optimization option is specified, -z2 is used by default
*The most important difference between -z2 and -z3 is that at level 2, all non-static
variables will live during their entire scope.
2 None*
3 Low
6 Medium
9 High
========================================================================================*/

扫描二维码推送至手机访问。

版权声明:本文由鸟的天空发布,如需转载请注明出处。

本文链接:http://xjtudll.cn/Exp/458/

标签: IARSTM8
分享给朋友:

“IAR STM8 #pragma optimize 指令” 的相关文章

Windows7自带计算器计算反三角函数

Windows7自带计算器计算反三角函数

开始->所有程序->附件->计算器 查看->选择科学型 点击【Inv】,即可进入反三角函数的计算。...

Allegro测量距离如何同时显示mil和mm双单位

Allegro测量距离如何同时显示mil和mm双单位

点击Setup菜单→User Preferences...(用户参数设置) 打开下面的对话框,选择Display→Element(元素)→show measure_altunits(显示测量所有档位)选项卡选择millimeters。 然后测量后显示的距离效果如下图所示...

Keil新增STC 51型号

Keil新增STC 51型号

STC官网提供的方法: (详见:http://www.mcu-memory.com/) 备份KEIL安装目录下的UV2.CDB或者UV3.CDB文件(在文件夹UV2或者UV3里面),然后用STC提供的同名的CDB文件覆盖。 这种方法操作起来很简单,但缺点是在器件选型时,只能选择STC单片机,其他的都...

水晶报表的文本对象中怎么插入换行符

水晶报表的文本对象中如何插入换行符?我的文本对象要显示的值是从RichTextBox中读出来的,但文本对象不能显示“\n”,怎么让文本对象换行呢?------解决方案--------------------1:不要用文本对象,用公式2:把\n替换成水晶报表里的换行符号Replace(字段,'...

C# 去掉小数点后面多余的0

1、使用TrimEnd()    decimal num1=(decimal)0.5;    //第一步将浮点数转换成字符串    string strNum=num1.ToString(); &nb...

Mac OS X下写入文件到NTFS格式U盘/移动硬盘

Mac OS X下写入文件到NTFS格式U盘/移动硬盘

苹果电脑的 Mac OS X 10.6 雪豹系统本来是自带 NTFS 格式磁盘分区读写功能的,但默认只开启读取功能,所以你把 NTFS 格式的 U 盘或移动硬盘插到苹果电脑上,会发现 Mac 能从里面拷文件,却不能把本机的文件拷进盘里去。 NTFS 磁盘写入功能的方法很多,但命令行、资源库什么的普...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。