arm's multiply(arm的乘)之二

今天上午在我的strongarm上做了次实验
环境是
strongarm 206MHZ
ppc2002

编写了一个程序

int res;
void func()
{
for(int loop=0;loop<1000;loop++)
for(int lop=0;lop<1000;lop++)
for(int lp=0;lp<1000;lp++)
res = lp*105
}

wince3.0的计时器据说有1ms的精度
用它测量的这段函数的执行时间如下
共6次,单位 ms
78736
76742<===这次很奇怪,不知道是不是我记录错误
78717
78733
78724
78721

可以得出
res = lp*105 这条指令大概用了79ns
另外上一篇文章中说evc3没有对乘法优化是错误的,我把105改成10005后运行时间几乎不变,
说明realse版本已经对乘法优化过了。从反汇编后的代码也可以看出,release版没有mul指令,
而debug版有mul指令。

而我把105改成10005后,发现反汇编代码居然变化非常大!奇怪!

有点沮丧,evc优化了我还能做什么?
有个问题是,如何能精确得出此指令的运行时间?79ns里包含了内存访问时间

posted on 2004-07-01 11:00  embed  阅读(776)  评论(0编辑  收藏  举报

导航