一段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
}
}