Advertisement
yumetodo

floating_point_asm

Mar 2nd, 2016
207
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ;VS X64 /Ox /arch:AVX2 float-point model: fast
  2. 000000013FB71070  mov         qword ptr [rsp+8],rbx  
  3. 000000013FB71075  mov         qword ptr [rsp+10h],rbp  
  4. 000000013FB7107A  mov         qword ptr [rsp+18h],rsi  
  5. 000000013FB7107F  push        rdi  
  6. 000000013FB71080  sub         rsp,20h  
  7.     clock_t startTimef, startTimed, endTimef, endTimed;
  8.     timeBeginPeriod(1);
  9. 000000013FB71084  mov         ecx,1  
  10. 000000013FB71089  call        qword ptr [__imp_timeBeginPeriod (013FB720A8h)]  
  11.  
  12.     startTimef = clock();
  13. 000000013FB7108F  call        qword ptr [__imp_clock (013FB721B0h)]  
  14. 000000013FB71095  vmovss      xmm4,dword ptr [__real@3dcccccd (013FB7228Ch)]  
  15. 000000013FB7109D  mov         ebx,5F5E100h  
  16. 000000013FB710A2  mov         ebp,eax  
  17. 000000013FB710A4  mov         ecx,ebx  
  18. 000000013FB710A6  vxorps      xmm0,xmm0,xmm0  
  19. 000000013FB710AA  nop         word ptr [rax+rax]  
  20.     floatloop();
  21. 000000013FB710B0  vaddss      xmm0,xmm0,xmm4  
  22. 000000013FB710B4  vaddss      xmm1,xmm0,xmm4  
  23. 000000013FB710B8  vaddss      xmm2,xmm1,xmm4  
  24. 000000013FB710BC  vaddss      xmm3,xmm2,xmm4  
  25. 000000013FB710C0  vaddss      xmm0,xmm3,xmm4  
  26. 000000013FB710C4  vaddss      xmm1,xmm0,xmm4  
  27. 000000013FB710C8  vaddss      xmm2,xmm1,xmm4  
  28. 000000013FB710CC  vaddss      xmm3,xmm2,xmm4  
  29.     floatloop();
  30. 000000013FB710D0  vaddss      xmm0,xmm3,xmm4  
  31. 000000013FB710D4  vaddss      xmm0,xmm0,xmm4  
  32. 000000013FB710D8  sub         rcx,1  
  33. 000000013FB710DC  jne         main+40h (013FB710B0h)  
  34. 000000013FB710DE  vcvtss2sd   xmm1,xmm0,xmm0  
  35. 000000013FB710E2  vmovd       rdx,xmm1  
  36. 000000013FB710E7  lea         rcx,[GS_ExceptionPointers+10h (013FB72240h)]  
  37. 000000013FB710EE  call        printf (013FB71010h)  
  38.     endTimef = clock();
  39. 000000013FB710F3  call        qword ptr [__imp_clock (013FB721B0h)]  
  40. 000000013FB710F9  mov         edi,eax  
  41.  
  42.     startTimed = clock();
  43. 000000013FB710FB  call        qword ptr [__imp_clock (013FB721B0h)]  
  44.     floatloop();
  45. 000000013FB71101  vmovsd      xmm4,qword ptr [__real@3fb999999999999a (013FB72298h)]  
  46.  
  47.     startTimed = clock();
  48. 000000013FB71109  mov         esi,eax  
  49. 000000013FB7110B  vxorps      xmm1,xmm1,xmm1  
  50. 000000013FB7110F  nop  
  51.     doubleloop();
  52. 000000013FB71110  vaddsd      xmm0,xmm1,xmm4  
  53. 000000013FB71114  vaddsd      xmm1,xmm0,xmm4  
  54. 000000013FB71118  vaddsd      xmm2,xmm1,xmm4  
  55. 000000013FB7111C  vaddsd      xmm3,xmm2,xmm4  
  56. 000000013FB71120  vaddsd      xmm0,xmm3,xmm4  
  57. 000000013FB71124  vaddsd      xmm1,xmm0,xmm4  
  58. 000000013FB71128  vaddsd      xmm2,xmm1,xmm4  
  59. 000000013FB7112C  vaddsd      xmm3,xmm2,xmm4  
  60. 000000013FB71130  vaddsd      xmm0,xmm3,xmm4  
  61. 000000013FB71134  vaddsd      xmm1,xmm0,xmm4  
  62. 000000013FB71138  sub         rbx,1  
  63. 000000013FB7113C  jne         main+0A0h (013FB71110h)  
  64. 000000013FB7113E  vmovd       rdx,xmm1  
  65. 000000013FB71143  lea         rcx,[GS_ExceptionPointers+18h (013FB72248h)]  
  66. 000000013FB7114A  call        printf (013FB71010h)  
  67.     endTimed = clock();
  68. 000000013FB7114F  call        qword ptr [__imp_clock (013FB721B0h)]  
  69.  
  70.     timeEndPeriod(1);
  71. 000000013FB71155  mov         ecx,1  
  72. 000000013FB7115A  mov         ebx,eax  
  73. 000000013FB7115C  call        qword ptr [__imp_timeEndPeriod (013FB720B0h)]  
  74.     printf("float:%ld\ndouble:%ld\n", endTimef - startTimef, endTimed - startTimed);
  75. 000000013FB71162  sub         ebx,esi  
  76. 000000013FB71164  lea         rcx,[GS_ExceptionPointers+20h (013FB72250h)]  
  77. 000000013FB7116B  sub         edi,ebp  
  78. 000000013FB7116D  mov         r8d,ebx  
  79. 000000013FB71170  mov         edx,edi  
  80. 000000013FB71172  call        printf (013FB71010h)  
  81. 000000013FB71177  vxorps      xmm0,xmm0,xmm0  
  82.     printf("float:%lf[sec.]\ndouble:%lf[sec.]\n", (double)(endTimef - startTimef) / CLOCKS_PER_SEC, (double)(endTimed - startTimed) / CLOCKS_PER_SEC);
  83. 000000013FB7117B  vcvtsi2sd   xmm0,xmm0,ebx  
  84. 000000013FB7117F  vmulsd      xmm2,xmm0,mmword ptr [__real@3f50624dd2f1a9fc (013FB72290h)]  
  85. 000000013FB71187  vxorps      xmm0,xmm0,xmm0  
  86. 000000013FB7118B  vcvtsi2sd   xmm0,xmm0,edi  
  87. 000000013FB7118F  vmulsd      xmm1,xmm0,mmword ptr [__real@3f50624dd2f1a9fc (013FB72290h)]  
  88. 000000013FB71197  vmovd       rdx,xmm1  
  89. 000000013FB7119C  vmovd       r8,xmm2  
  90. 000000013FB711A1  lea         rcx,[GS_ExceptionPointers+38h (013FB72268h)]  
  91. 000000013FB711A8  call        printf (013FB71010h)  
  92.     return 0;
  93. }
  94. 000000013FB711AD  mov         rbx,qword ptr [rsp+30h]  
  95. 000000013FB711B2  xor         eax,eax  
  96. 000000013FB711B4  mov         rbp,qword ptr [rsp+38h]  
  97. 000000013FB711B9  mov         rsi,qword ptr [rsp+40h]  
  98. 000000013FB711BE  add         rsp,20h  
  99. 000000013FB711C2  pop         rdi  
  100. 000000013FB711C3  ret  
  101. ;
  102. ;
  103. ;
  104. ;
  105. ;
  106. ;VS X64 /Ox /arch:AVX2 float-point model: precise
  107. 000000013F231070  mov         qword ptr [rsp+8],rbx  
  108. 000000013F231075  mov         qword ptr [rsp+10h],rbp  
  109. 000000013F23107A  mov         qword ptr [rsp+18h],rsi  
  110. 000000013F23107F  push        rdi  
  111. 000000013F231080  sub         rsp,20h  
  112.     clock_t startTimef, startTimed, endTimef, endTimed;
  113.     timeBeginPeriod(1);
  114. 000000013F231084  mov         ecx,1  
  115. 000000013F231089  call        qword ptr [__imp_timeBeginPeriod (013F2320A8h)]  
  116.  
  117.     startTimef = clock();
  118. 000000013F23108F  call        qword ptr [__imp_clock (013F2321B0h)]  
  119. 000000013F231095  vmovss      xmm4,dword ptr [__real@3dcccccd (013F23228Ch)]  
  120. 000000013F23109D  mov         ebx,5F5E100h  
  121. 000000013F2310A2  mov         ebp,eax  
  122. 000000013F2310A4  mov         ecx,ebx  
  123. 000000013F2310A6  vxorps      xmm0,xmm0,xmm0  
  124. 000000013F2310AA  nop         word ptr [rax+rax]  
  125.     floatloop();
  126. 000000013F2310B0  vaddss      xmm0,xmm0,xmm4  
  127. 000000013F2310B4  vaddss      xmm1,xmm0,xmm4  
  128. 000000013F2310B8  vaddss      xmm2,xmm1,xmm4  
  129. 000000013F2310BC  vaddss      xmm3,xmm2,xmm4  
  130. 000000013F2310C0  vaddss      xmm0,xmm3,xmm4  
  131. 000000013F2310C4  vaddss      xmm1,xmm0,xmm4  
  132. 000000013F2310C8  vaddss      xmm2,xmm1,xmm4  
  133. 000000013F2310CC  vaddss      xmm3,xmm2,xmm4  
  134.     floatloop();
  135. 000000013F2310D0  vaddss      xmm0,xmm3,xmm4  
  136. 000000013F2310D4  vaddss      xmm0,xmm0,xmm4  
  137. 000000013F2310D8  sub         rcx,1  
  138. 000000013F2310DC  jne         main+40h (013F2310B0h)  
  139. 000000013F2310DE  vcvtss2sd   xmm1,xmm0,xmm0  
  140. 000000013F2310E2  vmovd       rdx,xmm1  
  141. 000000013F2310E7  lea         rcx,[GS_ExceptionPointers+10h (013F232240h)]  
  142. 000000013F2310EE  call        printf (013F231010h)  
  143.     endTimef = clock();
  144. 000000013F2310F3  call        qword ptr [__imp_clock (013F2321B0h)]  
  145. 000000013F2310F9  mov         edi,eax  
  146.  
  147.     startTimed = clock();
  148. 000000013F2310FB  call        qword ptr [__imp_clock (013F2321B0h)]  
  149.     floatloop();
  150. 000000013F231101  vmovsd      xmm4,qword ptr [__real@3fb999999999999a (013F232290h)]  
  151.  
  152.     startTimed = clock();
  153. 000000013F231109  mov         esi,eax  
  154. 000000013F23110B  vxorps      xmm1,xmm1,xmm1  
  155. 000000013F23110F  nop  
  156.     doubleloop();
  157. 000000013F231110  vaddsd      xmm0,xmm1,xmm4  
  158. 000000013F231114  vaddsd      xmm1,xmm0,xmm4  
  159. 000000013F231118  vaddsd      xmm2,xmm1,xmm4  
  160. 000000013F23111C  vaddsd      xmm3,xmm2,xmm4  
  161. 000000013F231120  vaddsd      xmm0,xmm3,xmm4  
  162. 000000013F231124  vaddsd      xmm1,xmm0,xmm4  
  163. 000000013F231128  vaddsd      xmm2,xmm1,xmm4  
  164. 000000013F23112C  vaddsd      xmm3,xmm2,xmm4  
  165. 000000013F231130  vaddsd      xmm0,xmm3,xmm4  
  166. 000000013F231134  vaddsd      xmm1,xmm0,xmm4  
  167. 000000013F231138  sub         rbx,1  
  168. 000000013F23113C  jne         main+0A0h (013F231110h)  
  169. 000000013F23113E  vmovd       rdx,xmm1  
  170. 000000013F231143  lea         rcx,[GS_ExceptionPointers+18h (013F232248h)]  
  171. 000000013F23114A  call        printf (013F231010h)  
  172.     endTimed = clock();
  173. 000000013F23114F  call        qword ptr [__imp_clock (013F2321B0h)]  
  174.  
  175.     timeEndPeriod(1);
  176. 000000013F231155  mov         ecx,1  
  177. 000000013F23115A  mov         ebx,eax  
  178. 000000013F23115C  call        qword ptr [__imp_timeEndPeriod (013F2320B0h)]  
  179.     printf("float:%ld\ndouble:%ld\n", endTimef - startTimef, endTimed - startTimed);
  180. 000000013F231162  sub         ebx,esi  
  181. 000000013F231164  lea         rcx,[GS_ExceptionPointers+20h (013F232250h)]  
  182. 000000013F23116B  sub         edi,ebp  
  183. 000000013F23116D  mov         r8d,ebx  
  184. 000000013F231170  mov         edx,edi  
  185. 000000013F231172  call        printf (013F231010h)  
  186. 000000013F231177  vxorps      xmm0,xmm0,xmm0  
  187.     printf("float:%lf[sec.]\ndouble:%lf[sec.]\n", (double)(endTimef - startTimef) / CLOCKS_PER_SEC, (double)(endTimed - startTimed) / CLOCKS_PER_SEC);
  188. 000000013F23117B  vcvtsi2sd   xmm0,xmm0,ebx  
  189. 000000013F23117F  vdivsd      xmm2,xmm0,mmword ptr [__real@408f400000000000 (013F232298h)]  
  190. 000000013F231187  vxorps      xmm0,xmm0,xmm0  
  191. 000000013F23118B  vcvtsi2sd   xmm0,xmm0,edi  
  192. 000000013F23118F  vdivsd      xmm1,xmm0,mmword ptr [__real@408f400000000000 (013F232298h)]  
  193. 000000013F231197  vmovd       rdx,xmm1  
  194. 000000013F23119C  vmovd       r8,xmm2  
  195. 000000013F2311A1  lea         rcx,[GS_ExceptionPointers+38h (013F232268h)]  
  196. 000000013F2311A8  call        printf (013F231010h)  
  197.     return 0;
  198. }
  199. 000000013F2311AD  mov         rbx,qword ptr [rsp+30h]  
  200. 000000013F2311B2  xor         eax,eax  
  201. 000000013F2311B4  mov         rbp,qword ptr [rsp+38h]  
  202. 000000013F2311B9  mov         rsi,qword ptr [rsp+40h]  
  203. 000000013F2311BE  add         rsp,20h  
  204. 000000013F2311C2  pop         rdi  
  205. 000000013F2311C3  ret  
  206. ;
  207. ;
  208. ;
  209. ;
  210. ;
  211. ;VS Win32 /Ox /arch:IA32 float-point model: fast
  212. 00B410D0  push        ebp  
  213. 00B410D1  mov         ebp,esp  
  214. 00B410D3  and         esp,0FFFFFFC0h  
  215. 00B410D6  sub         esp,34h  
  216. 00B410D9  push        ebx  
  217. 00B410DA  push        esi  
  218. 00B410DB  push        edi  
  219.     clock_t startTimef, startTimed, endTimef, endTimed;
  220.     timeBeginPeriod(1);
  221. 00B410DC  push        1  
  222. 00B410DE  call        dword ptr [__imp__timeBeginPeriod@4 (0B42048h)]  
  223.  
  224.     startTimef = clock();
  225. 00B410E4  mov         edi,dword ptr [__imp__clock (0B420D0h)]  
  226. 00B410EA  call        edi  
  227. 00B410EC  mov         ebx,eax  
  228.     floatloop();
  229. 00B410EE  call        floatloop (0B41050h)  
  230.     endTimef = clock();
  231. 00B410F3  call        edi  
  232. 00B410F5  mov         dword ptr [esp+38h],eax  
  233.  
  234.     startTimed = clock();
  235. 00B410F9  call        edi  
  236. 00B410FB  mov         esi,eax  
  237.     doubleloop();
  238. 00B410FD  call        doubleloop (0B41090h)  
  239.     endTimed = clock();
  240. 00B41102  call        edi  
  241.  
  242.     timeEndPeriod(1);
  243. 00B41104  push        1  
  244.  
  245.     timeEndPeriod(1);
  246. 00B41106  mov         edi,eax  
  247. 00B41108  call        dword ptr [__imp__timeEndPeriod@4 (0B4204Ch)]  
  248.     printf("float:%ld\ndouble:%ld\n", endTimef - startTimef, endTimed - startTimed);
  249. 00B4110E  mov         eax,dword ptr [esp+38h]  
  250. 00B41112  sub         edi,esi  
  251. 00B41114  sub         eax,ebx  
  252. 00B41116  mov         dword ptr [esp+3Ch],edi  
  253. 00B4111A  push        edi  
  254. 00B4111B  push        eax  
  255. 00B4111C  push        0B42128h  
  256. 00B41121  mov         dword ptr [esp+44h],eax  
  257. 00B41125  call        printf (0B41010h)  
  258.     printf("float:%lf[sec.]\ndouble:%lf[sec.]\n", (double)(endTimef - startTimef) / CLOCKS_PER_SEC, (double)(endTimed - startTimed) / CLOCKS_PER_SEC);
  259. 00B4112A  fild        dword ptr [esp+48h]  
  260. 00B4112E  push        ecx  
  261. 00B4112F  fld         qword ptr [__real@3f50624dd2f1a9fc (0B42168h)]  
  262. 00B41135  fmul        st(1),st  
  263. 00B41137  fxch        st(1)  
  264. 00B41139  fstp        qword ptr [esp+8]  
  265. 00B4113D  fimul       dword ptr [esp+48h]  
  266. 00B41141  fstp        qword ptr [esp]  
  267. 00B41144  push        0B42140h  
  268. 00B41149  call        printf (0B41010h)  
  269. 00B4114E  add         esp,14h  
  270.     return 0;
  271. 00B41151  xor         eax,eax  
  272. }
  273. 00B41153  pop         edi  
  274. 00B41154  pop         esi  
  275. 00B41155  pop         ebx  
  276. 00B41156  mov         esp,ebp  
  277. 00B41158  pop         ebp  
  278. 00B41159  ret  
  279. ;
  280. ;
  281. ;
  282. ;
  283. ;
  284. ;VS Win32 /Ox /arch:IA32 float-point model: precise
  285. 00F11120  push        ebp  
  286. 00F11121  mov         ebp,esp  
  287. 00F11123  and         esp,0FFFFFFC0h  
  288. 00F11126  sub         esp,34h  
  289. 00F11129  push        ebx  
  290. 00F1112A  push        esi  
  291. 00F1112B  push        edi  
  292.     clock_t startTimef, startTimed, endTimef, endTimed;
  293.     timeBeginPeriod(1);
  294. 00F1112C  push        1  
  295. 00F1112E  call        dword ptr [__imp__timeBeginPeriod@4 (0F12048h)]  
  296.  
  297.     startTimef = clock();
  298. 00F11134  mov         edi,dword ptr [__imp__clock (0F120D0h)]  
  299. 00F1113A  call        edi  
  300. 00F1113C  mov         ebx,eax  
  301.     floatloop();
  302. 00F1113E  call        floatloop (0F11050h)  
  303.     endTimef = clock();
  304. 00F11143  call        edi  
  305. 00F11145  mov         dword ptr [esp+34h],eax  
  306.  
  307.     startTimed = clock();
  308. 00F11149  call        edi  
  309. 00F1114B  mov         esi,eax  
  310.     doubleloop();
  311. 00F1114D  call        doubleloop (0F110E0h)  
  312.     endTimed = clock();
  313. 00F11152  call        edi  
  314.  
  315.     timeEndPeriod(1);
  316. 00F11154  push        1  
  317.  
  318.     timeEndPeriod(1);
  319. 00F11156  mov         edi,eax  
  320. 00F11158  call        dword ptr [__imp__timeEndPeriod@4 (0F1204Ch)]  
  321.     printf("float:%ld\ndouble:%ld\n", endTimef - startTimef, endTimed - startTimed);
  322. 00F1115E  mov         eax,dword ptr [esp+34h]  
  323. 00F11162  sub         edi,esi  
  324. 00F11164  sub         eax,ebx  
  325. 00F11166  mov         dword ptr [esp+38h],edi  
  326. 00F1116A  push        edi  
  327. 00F1116B  push        eax  
  328. 00F1116C  push        0F12128h  
  329. 00F11171  mov         dword ptr [esp+40h],eax  
  330. 00F11175  call        printf (0F11010h)  
  331.     printf("float:%lf[sec.]\ndouble:%lf[sec.]\n", (double)(endTimef - startTimef) / CLOCKS_PER_SEC, (double)(endTimed - startTimed) / CLOCKS_PER_SEC);
  332. 00F1117A  fild        dword ptr [esp+44h]  
  333. 00F1117E  push        ecx  
  334. 00F1117F  fstp        qword ptr [esp+48h]  
  335. 00F11183  fld         qword ptr [esp+48h]  
  336. 00F11187  fld         qword ptr [__real@408f400000000000 (0F12178h)]  
  337. 00F1118D  fdiv        st(1),st  
  338. 00F1118F  fxch        st(1)  
  339. 00F11191  fstp        qword ptr [esp+8]  
  340. 00F11195  fild        dword ptr [esp+44h]  
  341. 00F11199  fstp        qword ptr [esp+48h]  
  342. 00F1119D  fdivr       qword ptr [esp+48h]  
  343. 00F111A1  fstp        qword ptr [esp]  
  344. 00F111A4  push        0F12140h  
  345. 00F111A9  call        printf (0F11010h)  
  346. 00F111AE  add         esp,14h  
  347.     return 0;
  348. 00F111B1  xor         eax,eax  
  349. }
  350. 00F111B3  pop         edi  
  351. 00F111B4  pop         esi  
  352. 00F111B5  pop         ebx  
  353. 00F111B6  mov         esp,ebp  
  354. 00F111B8  pop         ebp  
  355. 00F111B9  ret  
  356. ;
  357. ;
  358. ;
  359. ;
  360. ;
  361. ;VS Win32 /Ox /arch:SSE2 float-point model: fast
  362. 00EC1050  push        ebp  
  363. 00EC1051  mov         ebp,esp  
  364. 00EC1053  and         esp,0FFFFFFC0h  
  365. 00EC1056  sub         esp,34h  
  366. 00EC1059  push        ebx  
  367. 00EC105A  push        esi  
  368. 00EC105B  push        edi  
  369.     clock_t startTimef, startTimed, endTimef, endTimed;
  370.     timeBeginPeriod(1);
  371. 00EC105C  push        1  
  372. 00EC105E  call        dword ptr [__imp__timeBeginPeriod@4 (0EC2048h)]  
  373.  
  374.     startTimef = clock();
  375. 00EC1064  mov         esi,dword ptr [__imp__clock (0EC20D0h)]  
  376. 00EC106A  call        esi  
  377. 00EC106C  movss       xmm1,dword ptr [__real@3dcccccd (0EC2164h)]  
  378. 00EC1074  mov         ebx,eax  
  379. 00EC1076  xorps       xmm0,xmm0  
  380. 00EC1079  mov         ecx,5F5E100h  
  381. 00EC107E  xchg        ax,ax  
  382.     floatloop();
  383. 00EC1080  addss       xmm0,xmm1  
  384. 00EC1084  addss       xmm0,xmm1  
  385. 00EC1088  addss       xmm0,xmm1  
  386. 00EC108C  addss       xmm0,xmm1  
  387. 00EC1090  addss       xmm0,xmm1  
  388. 00EC1094  addss       xmm0,xmm1  
  389. 00EC1098  addss       xmm0,xmm1  
  390. 00EC109C  addss       xmm0,xmm1  
  391.     floatloop();
  392. 00EC10A0  addss       xmm0,xmm1  
  393. 00EC10A4  addss       xmm0,xmm1  
  394. 00EC10A8  sub         ecx,1  
  395. 00EC10AB  jne         main+30h (0EC1080h)  
  396. 00EC10AD  cvtss2sd    xmm0,xmm0  
  397. 00EC10B1  sub         esp,8  
  398. 00EC10B4  movsd       mmword ptr [esp],xmm0  
  399. 00EC10B9  push        0EC2118h  
  400. 00EC10BE  call        printf (0EC1010h)  
  401. 00EC10C3  add         esp,0Ch  
  402.     endTimef = clock();
  403. 00EC10C6  call        esi  
  404. 00EC10C8  mov         edi,eax  
  405.  
  406.     startTimed = clock();
  407. 00EC10CA  call        esi  
  408.     floatloop();
  409. 00EC10CC  movsd       xmm1,mmword ptr [__real@3fb999999999999a (0EC2170h)]  
  410. 00EC10D4  xorps       xmm0,xmm0  
  411.  
  412.     startTimed = clock();
  413. 00EC10D7  mov         dword ptr [esp+3Ch],eax  
  414.     floatloop();
  415. 00EC10DB  mov         ecx,5F5E100h  
  416.     doubleloop();
  417. 00EC10E0  addsd       xmm0,xmm1  
  418. 00EC10E4  addsd       xmm0,xmm1  
  419. 00EC10E8  addsd       xmm0,xmm1  
  420. 00EC10EC  addsd       xmm0,xmm1  
  421. 00EC10F0  addsd       xmm0,xmm1  
  422. 00EC10F4  addsd       xmm0,xmm1  
  423. 00EC10F8  addsd       xmm0,xmm1  
  424. 00EC10FC  addsd       xmm0,xmm1  
  425. 00EC1100  addsd       xmm0,xmm1  
  426. 00EC1104  addsd       xmm0,xmm1  
  427. 00EC1108  sub         ecx,1  
  428. 00EC110B  jne         main+90h (0EC10E0h)  
  429. 00EC110D  sub         esp,8  
  430. 00EC1110  movsd       mmword ptr [esp],xmm0  
  431. 00EC1115  push        0EC2120h  
  432. 00EC111A  call        printf (0EC1010h)  
  433. 00EC111F  add         esp,0Ch  
  434.     endTimed = clock();
  435. 00EC1122  call        esi  
  436.  
  437.     timeEndPeriod(1);
  438. 00EC1124  push        1  
  439. 00EC1126  mov         esi,eax  
  440. 00EC1128  call        dword ptr [__imp__timeEndPeriod@4 (0EC204Ch)]  
  441.     printf("float:%ld\ndouble:%ld\n", endTimef - startTimef, endTimed - startTimed);
  442. 00EC112E  sub         esi,dword ptr [esp+3Ch]  
  443. 00EC1132  sub         edi,ebx  
  444. 00EC1134  push        esi  
  445. 00EC1135  push        edi  
  446. 00EC1136  push        0EC2128h  
  447. 00EC113B  call        printf (0EC1010h)  
  448. 00EC1140  movd        xmm0,esi  
  449.     printf("float:%lf[sec.]\ndouble:%lf[sec.]\n", (double)(endTimef - startTimef) / CLOCKS_PER_SEC, (double)(endTimed - startTimed) / CLOCKS_PER_SEC);
  450. 00EC1144  cvtdq2pd    xmm0,xmm0  
  451. 00EC1148  push        ecx  
  452. 00EC1149  mulsd       xmm0,mmword ptr [__real@3f50624dd2f1a9fc (0EC2168h)]  
  453. 00EC1151  movsd       mmword ptr [esp+8],xmm0  
  454. 00EC1157  movd        xmm0,edi  
  455. 00EC115B  cvtdq2pd    xmm0,xmm0  
  456. 00EC115F  mulsd       xmm0,mmword ptr [__real@3f50624dd2f1a9fc (0EC2168h)]  
  457. 00EC1167  movsd       mmword ptr [esp],xmm0  
  458. 00EC116C  push        0EC2140h  
  459. 00EC1171  call        printf (0EC1010h)  
  460. 00EC1176  add         esp,14h  
  461.     return 0;
  462. 00EC1179  xor         eax,eax  
  463. }
  464. 00EC117B  pop         edi  
  465. 00EC117C  pop         esi  
  466. 00EC117D  pop         ebx  
  467. 00EC117E  mov         esp,ebp  
  468. 00EC1180  pop         ebp  
  469. 00EC1181  ret  
  470. ;
  471. ;
  472. ;
  473. ;
  474. ;
  475. ;VS Win32 /Ox /arch:SSE2 float-point model: precise
  476. 00A31050  push        ebp  
  477. 00A31051  mov         ebp,esp  
  478. 00A31053  and         esp,0FFFFFFC0h  
  479. 00A31056  sub         esp,34h  
  480. 00A31059  push        ebx  
  481. 00A3105A  push        esi  
  482. 00A3105B  push        edi  
  483.     clock_t startTimef, startTimed, endTimef, endTimed;
  484.     timeBeginPeriod(1);
  485. 00A3105C  push        1  
  486. 00A3105E  call        dword ptr [__imp__timeBeginPeriod@4 (0A32048h)]  
  487.  
  488.     startTimef = clock();
  489. 00A31064  mov         esi,dword ptr [__imp__clock (0A320D0h)]  
  490. 00A3106A  call        esi  
  491. 00A3106C  movss       xmm1,dword ptr [__real@3dcccccd (0A32164h)]  
  492. 00A31074  mov         ebx,eax  
  493. 00A31076  xorps       xmm0,xmm0  
  494. 00A31079  mov         ecx,5F5E100h  
  495. 00A3107E  xchg        ax,ax  
  496.     floatloop();
  497. 00A31080  addss       xmm0,xmm1  
  498. 00A31084  addss       xmm0,xmm1  
  499. 00A31088  addss       xmm0,xmm1  
  500. 00A3108C  addss       xmm0,xmm1  
  501. 00A31090  addss       xmm0,xmm1  
  502. 00A31094  addss       xmm0,xmm1  
  503. 00A31098  addss       xmm0,xmm1  
  504. 00A3109C  addss       xmm0,xmm1  
  505.     floatloop();
  506. 00A310A0  addss       xmm0,xmm1  
  507. 00A310A4  addss       xmm0,xmm1  
  508. 00A310A8  sub         ecx,1  
  509. 00A310AB  jne         main+30h (0A31080h)  
  510. 00A310AD  cvtss2sd    xmm0,xmm0  
  511. 00A310B1  sub         esp,8  
  512. 00A310B4  movsd       mmword ptr [esp],xmm0  
  513. 00A310B9  push        0A32118h  
  514. 00A310BE  call        printf (0A31010h)  
  515. 00A310C3  add         esp,0Ch  
  516.     endTimef = clock();
  517. 00A310C6  call        esi  
  518. 00A310C8  mov         edi,eax  
  519.  
  520.     startTimed = clock();
  521. 00A310CA  call        esi  
  522.     floatloop();
  523. 00A310CC  movsd       xmm1,mmword ptr [__real@3fb999999999999a (0A32168h)]  
  524. 00A310D4  xorps       xmm0,xmm0  
  525.  
  526.     startTimed = clock();
  527. 00A310D7  mov         dword ptr [esp+3Ch],eax  
  528.     floatloop();
  529. 00A310DB  mov         ecx,5F5E100h  
  530.     doubleloop();
  531. 00A310E0  addsd       xmm0,xmm1  
  532. 00A310E4  addsd       xmm0,xmm1  
  533. 00A310E8  addsd       xmm0,xmm1  
  534. 00A310EC  addsd       xmm0,xmm1  
  535. 00A310F0  addsd       xmm0,xmm1  
  536. 00A310F4  addsd       xmm0,xmm1  
  537. 00A310F8  addsd       xmm0,xmm1  
  538. 00A310FC  addsd       xmm0,xmm1  
  539. 00A31100  addsd       xmm0,xmm1  
  540. 00A31104  addsd       xmm0,xmm1  
  541. 00A31108  sub         ecx,1  
  542. 00A3110B  jne         main+90h (0A310E0h)  
  543. 00A3110D  sub         esp,8  
  544. 00A31110  movsd       mmword ptr [esp],xmm0  
  545. 00A31115  push        0A32120h  
  546. 00A3111A  call        printf (0A31010h)  
  547. 00A3111F  add         esp,0Ch  
  548.     endTimed = clock();
  549. 00A31122  call        esi  
  550.  
  551.     timeEndPeriod(1);
  552. 00A31124  push        1  
  553. 00A31126  mov         esi,eax  
  554. 00A31128  call        dword ptr [__imp__timeEndPeriod@4 (0A3204Ch)]  
  555.     printf("float:%ld\ndouble:%ld\n", endTimef - startTimef, endTimed - startTimed);
  556. 00A3112E  sub         esi,dword ptr [esp+3Ch]  
  557. 00A31132  sub         edi,ebx  
  558. 00A31134  push        esi  
  559. 00A31135  push        edi  
  560. 00A31136  push        0A32128h  
  561. 00A3113B  call        printf (0A31010h)  
  562. 00A31140  movd        xmm0,esi  
  563.     printf("float:%lf[sec.]\ndouble:%lf[sec.]\n", (double)(endTimef - startTimef) / CLOCKS_PER_SEC, (double)(endTimed - startTimed) / CLOCKS_PER_SEC);
  564. 00A31144  cvtdq2pd    xmm0,xmm0  
  565. 00A31148  push        ecx  
  566. 00A31149  divsd       xmm0,mmword ptr [__real@408f400000000000 (0A32170h)]  
  567. 00A31151  movsd       mmword ptr [esp+8],xmm0  
  568. 00A31157  movd        xmm0,edi  
  569. 00A3115B  cvtdq2pd    xmm0,xmm0  
  570. 00A3115F  divsd       xmm0,mmword ptr [__real@408f400000000000 (0A32170h)]  
  571. 00A31167  movsd       mmword ptr [esp],xmm0  
  572. 00A3116C  push        0A32140h  
  573. 00A31171  call        printf (0A31010h)  
  574. 00A31176  add         esp,14h  
  575.     return 0;
  576. 00A31179  xor         eax,eax  
  577. }
  578. 00A3117B  pop         edi  
  579. 00A3117C  pop         esi  
  580. 00A3117D  pop         ebx  
  581. 00A3117E  mov         esp,ebp  
  582. 00A31180  pop         ebp  
  583. 00A31181  ret
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement