没有合适的资源?快使用搜索试试~ 我知道了~
DSP.优化心得.doc
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 174 浏览量
2021-10-03
10:07:48
上传
评论
收藏 60KB DOC 举报
温馨提示
试读
33页
DSP.优化心得.doc
资源推荐
资源详情
资源评论
- .
C6XX 优化经历总结一、c6x 的编
译的常用选项
〔一〕 的编译程序为“〞使用的方法
: 编译程序
: 编译选项
: 或汇编源文件
说明:
编译选项是一个字母或者两个字母,对大小写不敏感。
编译选项的前面需要有一个“-〞符号。
一个字母的选项可以合并在一起。比方“-〞与“---〞一样。
两个字母的选项如果第一个字母一样也可以合并在一起。比方“-〞与“--〞
一样。
〔二〕有关优化的选项
:表示在程序中没有使用 技术,这使得编译器可以进展比较好的优化。
:对文件级别进展最强的优化,一般在编译时应该使用这个选项。但是在个别情况下
使用这个选项优化程序可能会出现
错误〔 有一样现象, 和 不会出现错误〕。可能是在优化循环,组织流水线的时
候发生错误。如果有这种现象出现可以同时
使用 选项,程序优化就不会出现错误,但是优化效果会下降。另外可以调整程序的表达
方式,可能会防止编译器发生错误。
:在程序级别进展优化。可以将所以文件联合在一起进展优化,主要有去掉没有被调
用的函数、总是常数的变量以及没有使用的
函数返回值。建议由程序员自己进展这种优化工作。使用这个选项在 下编译可能会
出现找不到编译程序的情况。
- .word.zl.
- .
:不使用冗余循环进展优化,减小程序的大小。一般情况下这个选项对程序大小的优
化作用不明显。
:去掉流水线的 ,减小程序的大小。这个选项的作用比较明显。但是有可
能出现读取地址超出有效围的问题,
所以要在数据段的开场和结尾处增加一些 !,或者在分配存时保证数组的前面和后
面一段围都是有效的地址。
可选的参数 给出这种 ! 的长度字节数。
〔三〕保存编译和优化信息的选项
":保存优化后生成汇编语言文件。
:汇编语言文件中参加优化信息,如果没有那么参加 语言源程序作为注释。
:在汇编语言文件参加软件流水线信息。
〔四〕有关调试和剖析的选项
:允许符号调试,在“#〞文件中包含符号信息和行号信息,可以在 语言级别进展调
试和剖析。使用联合使用-、- 和- 可以保
证能够进展符号调试的情况下最大限度的优化。
:允许 $ 优化后的程序。 在“#〞文件中包含符号信息和很少的行号信息。允
许在 语言的函数根本进展剖析。
如果联合使用这两个选项,- 选项可能被忽略,结果与只用- 一样。
〔五〕其它类型
:生成大存模式的程序。
%%-:缺省情况下将集合变量〔数组和构造〕作为 &$ 型。
%%:缺省情况下将全部函数作为 &$ 型
%%: 等于 加
%%: 缺省情况下将全部数据和函数作为 &$ 型
〔六〕建议使用的编译方式
- .word.zl.
- .
-"----%%'〞
方式 用于程序的调试,这种方式具有比较强的优化能力,并且支持符号调试。在编译的
过程中不会发生错误。
由于生成的“#〞文件中包含了符号信息和行号信息,所以比较大。
-"----%%'〞
方式 用于程序的剖析〔$〕,这种方式的优化能力几乎最强〔绝大多数情况下与方
式 一样〕,
并且支持对程序进展 $。文件中只包含了符号信息和很少的行号信息,所以“#〞文
件比较小。
-"----%%'〞
方式 用于最终的发行版本程序,可以对程序进展最强的优化,并且去掉了全部的符号和
行号信息,所以“#〞文件比较小。
由多个文件组成的程序应该编写 ",将编译参数放在该文件中,并在其中说明使用
的编译器的版本号。
〔七〕连接参数
- :指定堆的大小
-": 指定栈的大小
连接的各种选项应该统一放在“!〞文件中
二、双重循环和多重循环的优化总结
双重循环多重循环看起来比较复杂,但实际上多重循环优化方法比较简单,就在于一个字:
“拆〞,一旦完成这一步之后,
多重循环就成为单层循环,优化就可以按照普通的单层循环来做了。
多重循环的特点是在优化器优化时只在最层循环中形成一个 ,这样循环语句就不
能充分利用 的软件流水线,
而且对于部循环的次数较少的情况,消耗在 $ 和 上的 ( 数也是不可无视
的。
针对这种状况可以考虑将多重循环拆开形成一个单层循环,可以拆外层循环也可以拆层循
- .word.zl.
- .
环,
一般视具体情况而定。这样就可以充分利用优化器构成的 )。如下例:
%%*!$+ $#, $&, $#-
%%.
%%,/0
%%#10
%%&$+1023044-
%%.
%%&$+/10/20/44-
%%%%#41&/5#46/0
%%#1+#776-0
%%8
层循环循环次数较少,运算量也不大,资源方面只占用了一个乘法器,一个 ( 只使用
一次乘法器,
而事实上我们可以在一个 ( 使用两个乘法器,所以还可以充分利用另外的一个乘法器。
因此考虑将层循环拆开来执行,如下:
%%*!$9#+ $#, $&, $#-
%%.
%%,/0
%%#0
%%%%&$+1023044-
%%%%%%.
%%%%#1&5#460
%%%%#41&5#430
%%%%#41&5#40
%%%%#41&5#40
- .word.zl.
- .
%%%%#41&35#40
%%%%#41&65#40
%%%%#41&5#40
%%%%#41&:5#40
%%%%#41&5#4:0
%%%%#41&5#40
%%%%#41&5#460
%%%%#41&5#430
%%%%#41&5#40
%%%%#41&5#40
%%%%#41&35#40
%%%%#41&65#40
%%%%#1+#776-0
%%8
这样虽然代码长度增加了,可变成了单循环,所有的运算都参加到 中来,在
)!"$%
中产生每一个 ( 都使用了两个乘法器,充分利用了 ;<) 部的资源,提高了运行效率。
又如下例:
130
&$+"10"230"44-
%%.
%%%%10
%%%%&$+1"0233041<=>)-
%%%%.
%%%%%%10
%%%%%%&$+/10/2330/44-
- .word.zl.
剩余32页未读,继续阅读
资源评论
wdqsv88
- 粉丝: 3
- 资源: 13万+
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功