想把写的程序针对ARM 汇编做优化,求知道资料!!!!

MrFool 2005-01-14 11:03:59
有一个PPC 2003的程序
现在想提高它的性能,打算针对汇编指令做一下优化,看看能不能有所提高
请问各位大虾,哪里有这方面的参考材料啊?
谢谢了先!!
...全文
161 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
载舟之水 2005-01-18
  • 打赏
  • 举报
回复
支持,但是和奔腾根本不是一个数量级的。
详细内容请参考XScale系列处理器规范
http://www.intel.com/cn/gb/wireless/pca/applicationsprocessors/manuals/
MrFool 2005-01-18
  • 打赏
  • 举报
回复
那一般的PXA25X, PXA26X的cpu支不支持浮点运算呢???
MrFool 2005-01-17
  • 打赏
  • 举报
回复
谢谢nbcool
还有一个问题就是我的同事告诉我曾经把针对PC的cpu做过语言级优化过的程序放到PPC上运行,发现速度反而变慢了。
请问针对ARM cpu做C语言优化是不是跟对一般的PC的优化有很大的诧异呢?
谢谢
载舟之水 2005-01-17
  • 打赏
  • 举报
回复
那当然会变慢,因为PC上有浮点运算指令或MMX SSE等,
如果而PPC设备所用的CPU浮点运算基本上是效率很低的或者是完全靠软件模拟,所以你要做汇编级的优化,首先你要明确你的CPU是否完全支持浮点指令,否则就要使用整数算法来代替浮点算法。这一点常用在编解码算法上。比如著名的mad mp3解码算法,在ARM上工作效率非常高,你可以参考它是如何使用整数算法解码的。所以你要注意程序中不要用浮点算法,改为整数算法,可以使速度大大提高。
载舟之水 2005-01-16
  • 打赏
  • 举报
回复
只要对C做了较好的优化,汇编也就不能提高多少性能。
循环语句用不了多少时间,关键是算法以及处理运算规则的问题。
载舟之水 2005-01-16
  • 打赏
  • 举报
回复
是啊,比如用

for(;;)代替while, do

用移位操作代替乘除法。

用无符号做除法及循环变量。

用寄存器变量代替常用变量。(EVC的ARM编译器已经自动做了这个优化)

用内存池技术以及减少动态分配次数,用静态或全局数组代替动态分配等

还有注意在32位系统中并不一定是16位变量运算比32快。

优化方法很多,就不一一列举了,

总之,C语言的优化比汇编更重要,因为编译器会自动对C语言程序做汇编的优化,EVC的ARM编译器做得不错,不知道其他如何。
MrFool 2005-01-16
  • 打赏
  • 举报
回复
那就是说语言级的优化做好的话,汇编级的优化基本不会有很大的性能提高??
MrFool 2005-01-15
  • 打赏
  • 举报
回复
to nbcool:
我的意思是假设语言级的优化已经做过了,也就是说对C/C++的算法,语句优化已经做过
现在是希望能把性能再提高点
所以是不是应该对汇编指令优化??
因为本人不太懂汇编优化,所以可能表达的不是很清楚。
但是应该就是你说的汇编重写。

请问:
1、进行汇编重写,性能一般会有多大幅度的提高?还是要根据具体程序的差异而起伏较大。我个人觉得是不是核心模块里循环语句特别多,进行汇编重写,性能会有很大的提高??不知道理解对不对,请指正。
2、有没有什么指导的资料可以推荐一下?

谢谢
载舟之水 2005-01-14
  • 打赏
  • 举报
回复
要做什么优化?用汇编重写还是只对C优化,你都没写清楚。
MrFool 2005-01-14
  • 打赏
  • 举报
回复
搜索什么关键字啊???
主要是从来没有做过汇编指令的优化,一点基础都没有
感觉无处下手
aerzha 2005-01-14
  • 打赏
  • 举报
回复
搜索一下。。。。

19,502

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧