用arm-elf-gcc -O2编绎libmad库的问题

     前段时间将UCOS/MINIGUI移到2440上,最近在搞驱动,但音频驱动调试正常后, 将LIBMAD移到板子上遇到了麻烦.

     首先是在ADS上移了LIBMAD(移植起来方便),编绎后速度很快(用-O2优化),播放没有问题,但用arm-elf-gcc -O2编绎后,LIBMAD解码速度跟不上,不知其原因,找了好久,各种可能都想到了,更换编绎器版本,在不同的平台上编绎,还是找不到原因,后面忽然试着将-O2改成-O1编绎LIBMAD库后,下到板子上,播放正常了.这就让人感觉有点摸不着头脑了.

     照理说,-O2优化应该经-O1优化更好,为什么解码速度会跟不上呢?

     后来试着用-O2先将所有LIBMAD的源文件都编绎成.o(此时编绎出来是不能正常播放的),再逐个将源文件用-O1编绎(编绎一个.c文件,就要试一次,这样一个一个排除),后面发现synth.c这个文件用-O1编绎后(其它.c文件都是-O2优化),播放正常.看来问题就在synth.c这个文件里面.但我到现在没有找到为什么会这样,只是简单地看了一下-O2/-O1编绎出来的反汇编文件,发现在-O2时,会有很多栈操作,而同样的代码在-O1时大多用的是寄存器操作,至于为什么会这样,正在研究当中,如有结论再贴出来分享.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值