读书人

一段C程序高手指教。该怎么处理

发布时间: 2012-03-30 17:32:09 作者: rapoo

一段C程序,高手指教。
long addnub (float dval)
{
static float magic=12582912.0;

int s=1;
s = (*(long *)&dval)> > 29+1;
dval=s*dval+magic;
return s*( (*(long *)&dval)&0x3FFFFF);

}
以上是一段C函数,请教如何修改才能是这个函数的执行时间更省。
转换成汇编也行。不过本人菜鸟不会汇编。高手指教。高手指点那句能修改减少执行时间。或帮忙改成汇编。谢谢。!!!

[解决办法]
long addnub (float dval)
{
register float magic=12582912.0;

__asm{
mov dword ptr [ebp-8],1
mov eax,dword ptr [ebp+8]
sar eax,1Eh
mov dword ptr [ebp-8],eax
fild dword ptr [ebp-8]
fmul dword ptr [ebp+8]
fadd dword ptr [ebp-4]
fstp dword ptr [ebp+8]
mov ecx,dword ptr [ebp+8]
and ecx,3FFFFFh
mov eax,dword ptr [ebp-8]
imul eax,ecx
}
}

读书人网 >C语言

热点推荐