-
-
[讨论]idiv到底有多慢?
-
发表于:
2008-8-11 09:01
4843
-
VC代码:
i /= 255;
DEBUG下汇编:
00411A3C mov eax,dword ptr [i]
00411A3F cdq
00411A40 mov ecx,0FFh
00411A45 idiv eax,ecx
00411A47 mov dword ptr [i],eax
RELEASE下汇编:
0040100F mov ecx,dword ptr [i]
00401012 mov eax,80808081h
00401017 imul ecx
00401019 add edx,ecx
0040101B sar edx,7
0040101E mov eax,edx
00401020 shr eax,1Fh
00401023 add eax,edx
00401025 mov dword ptr [i],eax
除去数据从i读出和写入的两条指令,DEBUG下忠实的按照字面翻译,只用了8个字节,而RELEASE下化除为乘,却用了19个字节!
idiv的速度真有这么慢么?甚至不惜多一倍多的指令周期数,也要跟idiv说拜拜?
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课