首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

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

2012-03-30 
一段C程序,高手指教。longaddnub(floatdval){staticfloatmagic12582912.0ints1s(*(long*)&dval) 29

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

热点排行