1. /*
  2. * Command line: opannotate --source --assembly test
  3. *
  4. * Interpretation of command line:
  5. * Output annotated assembly listing with samples
  6. *
  7. * CPU: Core 2, speed 1601 MHz (estimated)
  8. * Counted CPU_CLK_UNHALTED events (Clock cycles when not halted) with a unit mask of 0x00 (Unhalted core cycles) count 800500
  9. * Counted RAT_STALLS events (Partial register stall cycles) with a unit mask of 0x0f (All RAT) count 1000000
  10. */
  11. :
  12. :/home/user/prog/tri/test: file format elf32-i386
  13. :
  14. :
  15. :Disassembly of section .text:
  16. :
  17. 080488fa <triAsm2.loop>: /* triAsm2.loop total: 21090 27.3325 10658 52.4508 */
  18. : mov esi, [ebp+0x14] ; cg
  19. : mov edi, [ebp+0x18] ; cb
  20. :
  21. :.loop:
  22. :
  23. : add esi, dcg
  24. 1957 2.5363 1583 7.7904 : 80488fa: add 0x20(%ebp),%esi
  25. : mov eax, esi
  26. 76 0.0985 20 0.0984 : 80488fd: mov %esi,%eax
  27. : shr eax, 8
  28. 15 0.0194 17 0.0837 : 80488ff: shr $0x8,%eax
  29. :
  30. : add edi, dcb
  31. 415 0.5378 354 1.7421 : 8048902: add 0x24(%ebp),%edi
  32. : mov ebx, edi
  33. 1604 2.0788 1235 6.0778 : 8048905: mov %edi,%ebx
  34. : shr ebx, 16
  35. 742 0.9616 580 2.8543 : 8048907: shr $0x10,%ebx
  36. : mov bh, ah
  37. 1171 1.5176 323 1.5896 : 804890a: mov %ah,%bh
  38. :
  39. : mov eax, cr
  40. 1289 1.6705 661 3.2530 : 804890c: mov 0x10(%ebp),%eax
  41. : add eax, dcr
  42. 430 0.5573 194 0.9547 : 804890f: add 0x1c(%ebp),%eax
  43. : mov cr, eax
  44. 592 0.7672 146 0.7185 : 8048912: mov %eax,0x10(%ebp)
  45. :
  46. : mov ax, bx ; slower
  47. 998 1.2934 209 1.0285 : 8048915: mov %bx,%ax
  48. :
  49. : mov DWORD [edx], eax
  50. 3659 4.7420 512 2.5197 : 8048918: mov %eax,(%edx)
  51. :
  52. : add edx, 4
  53. 7976 10.3368 4775 23.4990 : 804891a: add $0x4,%edx
  54. :
  55. : dec ecx
  56. 1 0.0013 1 0.0049 : 804891d: dec %ecx
  57. : jge .loop
  58. : 804891e: jge 80488fa <triAsm2.loop>
  59. :
  60. : popa
  61. : 8048920: popa
  62. :
  63. : pop ebp
  64. 157 0.2035 48 0.2362 : 8048921: pop %ebp
  65. : ret
  66. 8 0.0104 0 0 : 8048922: ret
  67. :
  68. :/home/user/prog/tri/test: file format elf32-i386
  69. :
  70. :
  71. :Disassembly of section .text:
  72. :
  73. 08048850 <triC>: /* triC total: 16137 20.9134 4810 23.6713 */
  74. :#include <stdlib.h>
  75. :#include <stdint.h>
  76. :
  77. :// a5afb9
  78. :// ./test 1,46s user 0,00s system 99% cpu 1,471 total
  79. :void triC(uint32_t* dest, uint32_t cnt, uint32_t cr, uint32_t cg, uint32_t cb, uint32_t dcr, uint32_t dcg, uint32_t dcb) {
  80. 14 0.0181 0 0 : 8048850: push %ebp
  81. : 8048851: mov %esp,%ebp
  82. : 8048853: push %edi
  83. : while (cnt--) {
  84. 7 0.0091 0 0 : 8048854: mov 0xc(%ebp),%eax
  85. :#include <stdlib.h>
  86. :#include <stdint.h>
  87. :
  88. :// a5afb9
  89. :// ./test 1,46s user 0,00s system 99% cpu 1,471 total
  90. :void triC(uint32_t* dest, uint32_t cnt, uint32_t cr, uint32_t cg, uint32_t cb, uint32_t dcr, uint32_t dcg, uint32_t dcb) {
  91. : 8048857: push %esi
  92. : 8048858: mov 0x14(%ebp),%ecx
  93. : 804885b: push %ebx
  94. 5 0.0065 0 0 : 804885c: mov 0x8(%ebp),%esi
  95. 1 0.0013 0 0 : 804885f: mov 0x10(%ebp),%ebx
  96. : 8048862: mov 0x18(%ebp),%edx
  97. : while (cnt--) {
  98. : 8048865: test %eax,%eax
  99. : 8048867: je 80488a1 <triC+0x51>
  100. 7 0.0091 0 0 : 8048869: lea 0x0(%esi,%eiz,1),%esi
  101. : cr += dcr;
  102. 1962 2.5427 316 1.5551 : 8048870: add 0x1c(%ebp),%ebx
  103. : cg += dcg;
  104. 11 0.0143 1 0.0049 : 8048873: add 0x20(%ebp),%ecx
  105. : cb += dcb;
  106. 11 0.0143 4 0.0197 : 8048876: add 0x24(%ebp),%edx
  107. : *dest++ = (cr & 0xffff0000) | ((cg >> 8) & 0xff00) | ((cb >> 16) & 0xff);
  108. 116 0.1503 3 0.0148 : 8048879: mov %ecx,%eax
  109. 2102 2.7242 91 0.4478 : 804887b: mov %edx,%edi
  110. 19 0.0246 5 0.0246 : 804887d: shr $0x8,%eax
  111. 587 0.7607 0 0 : 8048880: shr $0x10,%edi
  112. 1072 1.3893 69 0.3396 : 8048883: and $0xff00,%eax
  113. 2079 2.6944 605 2.9774 : 8048888: and $0xff,%edi
  114. 379 0.4912 66 0.3248 : 804888e: or %edi,%eax
  115. 1748 2.2654 658 3.2382 : 8048890: mov %ebx,%edi
  116. : 8048892: xor %di,%di
  117. 526 0.6817 423 2.0817 : 8048895: or %edi,%eax
  118. 1517 1.9660 682 3.3563 : 8048897: mov %eax,(%esi)
  119. 1825 2.3652 969 4.7687 : 8048899: add $0x4,%esi
  120. :#include <stdint.h>
  121. :
  122. :// a5afb9
  123. :// ./test 1,46s user 0,00s system 99% cpu 1,471 total
  124. :void triC(uint32_t* dest, uint32_t cnt, uint32_t cr, uint32_t cg, uint32_t cb, uint32_t dcr, uint32_t dcg, uint32_t dcb) {
  125. : while (cnt--) {
  126. 168 0.2177 79 0.3888 : 804889c: decl 0xc(%ebp)
  127. 1884 2.4416 821 4.0404 : 804889f: jne 8048870 <triC+0x20>
  128. : cr += dcr;
  129. : cg += dcg;
  130. : cb += dcb;
  131. : *dest++ = (cr & 0xffff0000) | ((cg >> 8) & 0xff00) | ((cb >> 16) & 0xff);
  132. : }
  133. :}
  134. : 80488a1: pop %ebx
  135. 71 0.0920 18 0.0886 : 80488a2: pop %esi
  136. 2 0.0026 0 0 : 80488a3: pop %edi
  137. 12 0.0156 0 0 : 80488a4: leave
  138. 12 0.0156 0 0 : 80488a5: ret
  139. : 80488a6: nop
  140. : 80488a7: nop
  141. : 80488a8: nop
  142. : 80488a9: nop
  143. : 80488aa: nop
  144. : 80488ab: nop
  145. : 80488ac: nop
  146. : 80488ad: nop
  147. : 80488ae: nop
  148. : 80488af: nop
  149. :
  150. :/home/user/prog/tri/test: file format elf32-i386
  151. :
  152. :
  153. :Disassembly of section .text:
  154. :
  155. 080488c0 <triAsm1.loop>: /* triAsm1.loop total: 14534 18.8359 4834 23.7894 */
  156. : mov esi, [ebp+0x14] ; cg
  157. : mov edi, [ebp+0x18] ; cb
  158. :
  159. :.loop:
  160. :
  161. : add esi, dcg
  162. 2036 2.6386 774 3.8091 : 80488c0: add 0x20(%ebp),%esi
  163. : mov eax, esi
  164. 72 0.0933 4 0.0197 : 80488c3: mov %esi,%eax
  165. : shr eax, 8
  166. 9 0.0117 0 0 : 80488c5: shr $0x8,%eax
  167. :
  168. : add edi, dcb
  169. 43 0.0557 21 0.1033 : 80488c8: add 0x24(%ebp),%edi
  170. : mov ebx, edi
  171. 1971 2.5544 364 1.7913 : 80488cb: mov %edi,%ebx
  172. : shr ebx, 16
  173. 350 0.4536 101 0.4970 : 80488cd: shr $0x10,%ebx
  174. : mov bh, ah
  175. 1119 1.4502 42 0.2067 : 80488d0: mov %ah,%bh
  176. :
  177. : mov eax, cr
  178. 1011 1.3102 147 0.7234 : 80488d2: mov 0x10(%ebp),%eax
  179. : add eax, dcr
  180. 729 0.9448 162 0.7972 : 80488d5: add 0x1c(%ebp),%eax
  181. : mov cr, eax
  182. 4 0.0052 3 0.0148 : 80488d8: mov %eax,0x10(%ebp)
  183. :
  184. : mov ah, bh ; faster
  185. 472 0.6117 98 0.4823 : 80488db: mov %bh,%ah
  186. : mov al, bl
  187. 951 1.2325 168 0.8268 : 80488dd: mov %bl,%al
  188. :
  189. : mov DWORD [edx], eax
  190. 1170 1.5163 545 2.6821 : 80488df: mov %eax,(%edx)
  191. :
  192. : add edx, 4
  193. 4287 5.5559 2294 11.2894 : 80488e1: add $0x4,%edx
  194. :
  195. : dec ecx
  196. 193 0.2501 89 0.4380 : 80488e4: dec %ecx
  197. : jge .loop
  198. 3 0.0039 1 0.0049 : 80488e5: jge 80488c0 <triAsm1.loop>
  199. :
  200. : popa
  201. : 80488e7: popa
  202. :
  203. : pop ebp
  204. 107 0.1387 21 0.1033 : 80488e8: pop %ebp
  205. : ret
  206. 7 0.0091 0 0 : 80488e9: ret
  207. :
  208. :/home/user/prog/tri/test: file format elf32-i386
  209. :
  210. :
  211. :Disassembly of section .text:
  212. :
  213. 08048933 <triAsm3.loop>: /* triAsm3.loop total: 12617 16.3515 0 0 */
  214. : mov ecx, [ebp+0x0c] ; cnt
  215. : mov esi, [ebp+0x14] ; cg
  216. : mov edi, [ebp+0x18] ; cb
  217. :
  218. :.loop:
  219. : mov eax, cr
  220. 1948 2.5246 0 0 : 8048933: mov 0x10(%ebp),%eax
  221. : add eax, dcr
  222. 26 0.0337 0 0 : 8048936: add 0x1c(%ebp),%eax
  223. : mov cr, eax
  224. 367 0.4756 0 0 : 8048939: mov %eax,0x10(%ebp)
  225. :
  226. : and eax, 0xffff0000
  227. 840 1.0886 0 0 : 804893c: and $0xffff0000,%eax
  228. :
  229. : add esi, dcg
  230. 1348 1.7470 0 0 : 8048941: add 0x20(%ebp),%esi
  231. : mov ebx, esi
  232. 9 0.0117 0 0 : 8048944: mov %esi,%ebx
  233. : shr ebx, 8
  234. 45 0.0583 0 0 : 8048946: shr $0x8,%ebx
  235. : and ebx, 0x0000ff00
  236. 819 1.0614 0 0 : 8048949: and $0xff00,%ebx
  237. : or eax, ebx
  238. 1426 1.8481 0 0 : 804894f: or %ebx,%eax
  239. :
  240. : add edi, dcb
  241. 576 0.7465 0 0 : 8048951: add 0x24(%ebp),%edi
  242. : mov ebx, edi
  243. 16 0.0207 0 0 : 8048954: mov %edi,%ebx
  244. : shr ebx, 16
  245. 474 0.6143 0 0 : 8048956: shr $0x10,%ebx
  246. : and ebx, 0x000000ff
  247. 1075 1.3932 0 0 : 8048959: and $0xff,%ebx
  248. : or eax, ebx
  249. 663 0.8592 0 0 : 804895f: or %ebx,%eax
  250. :
  251. : mov DWORD [edx], eax
  252. 838 1.0860 0 0 : 8048961: mov %eax,(%edx)
  253. :
  254. : add edx, 4
  255. 1566 2.0295 0 0 : 8048963: add $0x4,%edx
  256. :
  257. : dec ecx
  258. 449 0.5819 0 0 : 8048966: dec %ecx
  259. : jge .loop
  260. : 8048967: jge 8048933 <triAsm3.loop>
  261. :
  262. : popa
  263. : 8048969: popa
  264. :
  265. : pop ebp
  266. 124 0.1607 0 0 : 804896a: pop %ebp
  267. : ret
  268. 8 0.0104 0 0 : 804896b: ret
  269. :
  270. :/home/user/prog/tri/test: file format elf32-i386
  271. :
  272. :
  273. :Disassembly of section .text:
  274. :
  275. 08048985 <triAsm4.loop>: /* triAsm4.loop total: 12241 15.8642 12 0.0591 */
  276. : mov edx, [ebp+0x10] ; cr
  277. : mov esi, [ebp+0x14] ; cg
  278. : mov esp, [ebp+0x18] ; cb
  279. :
  280. :.loop:
  281. : add edx, dcr
  282. 2062 2.6723 0 0 : 8048985: add 0x1c(%ebp),%edx
  283. : add esi, dcg
  284. 50 0.0648 0 0 : 8048988: add 0x20(%ebp),%esi
  285. : add esp, dcb
  286. 10 0.0130 0 0 : 804898b: add 0x24(%ebp),%esp
  287. :
  288. : ;*dest++ = (cr & 0xffff0000) | ((cg >> 8) & 0xff00) | ((cb >> 16) & 0xff);
  289. : mov eax, edx ; eax=cr
  290. 22 0.0285 1 0.0049 : 804898e: mov %edx,%eax
  291. : and eax, 0xffff0000
  292. 2004 2.5972 4 0.0197 : 8048990: and $0xffff0000,%eax
  293. :
  294. : mov ebx, esi ; ebx=cg
  295. 88 0.1140 0 0 : 8048995: mov %esi,%ebx
  296. : shr ebx, 8
  297. 46 0.0596 0 0 : 8048997: shr $0x8,%ebx
  298. : and ebx, 0xff00
  299. 171 0.2216 0 0 : 804899a: and $0xff00,%ebx
  300. : or eax, ebx
  301. 2105 2.7281 2 0.0098 : 80489a0: or %ebx,%eax
  302. : ;mov ah, bh
  303. :
  304. : mov ebx, esp
  305. 825 1.0692 0 0 : 80489a2: mov %esp,%ebx
  306. : shr ebx, 16
  307. 24 0.0311 0 0 : 80489a4: shr $0x10,%ebx
  308. : and ebx, 0xff
  309. 54 0.0700 0 0 : 80489a7: and $0xff,%ebx
  310. : or eax, ebx
  311. 1474 1.9103 2 0.0098 : 80489ad: or %ebx,%eax
  312. : ;mov al, bl
  313. :
  314. : mov DWORD [edi], eax
  315. 1128 1.4619 0 0 : 80489af: mov %eax,(%edi)
  316. : add edi, 4
  317. 1438 1.8636 3 0.0148 : 80489b1: add $0x4,%edi
  318. :
  319. : dec ecx
  320. : 80489b4: dec %ecx
  321. : jge .loop
  322. 598 0.7750 0 0 : 80489b5: jge 8048985 <triAsm4.loop>
  323. :
  324. : mov esp, [stackptr]
  325. : 80489b7: mov 0x804a020,%esp
  326. :
  327. : popa
  328. 65 0.0842 0 0 : 80489bd: popa
  329. :
  330. : pop ebp
  331. 69 0.0894 0 0 : 80489be: pop %ebp
  332. : ret
  333. 8 0.0104 0 0 : 80489bf: ret
  334. :
  335. :/home/user/prog/tri/test: file format elf32-i386
  336. :
  337. :
  338. :Disassembly of section .text:
  339. :
  340. 08048470 <main>: /* main total: 281 0.3642 0 0 */
  341. : tri(scanline, rand() % 640, 10<<16, 20<<16, 30<<16, 1<<14, 1<<14, 1<<14);\
  342. : }\
  343. : printf(#tri ": %f ms, %x\n",(clock()-start)*1000.0/CLOCKS_PER_SEC,scanline[620]);\
  344. : }
  345. :
  346. :int main() {
  347. : 8048470: push %ebp
  348. : 8048471: mov %esp,%ebp
  349. : 8048473: and $0xfffffff0,%esp
  350. : 8048476: push %edi
  351. : 8048477: push %esi
  352. : test(triC);
  353. : 8048478: mov $0x66666667,%esi
  354. : tri(scanline, rand() % 640, 10<<16, 20<<16, 30<<16, 1<<14, 1<<14, 1<<14);\
  355. : }\
  356. : printf(#tri ": %f ms, %x\n",(clock()-start)*1000.0/CLOCKS_PER_SEC,scanline[620]);\
  357. : }
  358. :
  359. :int main() {
  360. : 804847d: push %ebx
  361. : test(triC);
  362. : 804847e: mov $0x4c4b40,%ebx
  363. : tri(scanline, rand() % 640, 10<<16, 20<<16, 30<<16, 1<<14, 1<<14, 1<<14);\
  364. : }\
  365. : printf(#tri ": %f ms, %x\n",(clock()-start)*1000.0/CLOCKS_PER_SEC,scanline[620]);\
  366. : }
  367. :
  368. :int main() {
  369. : 8048483: sub $0x34,%esp
  370. : test(triC);
  371. : 8048486: call 8048390 <clock@plt>
  372. : 804848b: movl $0x3c,(%esp)
  373. : 8048492: mov %eax,%edi
  374. : 8048494: call 8048350 <srand@plt>
  375. : 8048499: lea 0x0(%esi,%eiz,1),%esi
  376. 5 0.0065 0 0 : 80484a0: call 80483a0 <rand@plt>
  377. 18 0.0233 0 0 : 80484a5: movl $0x4000,0x1c(%esp)
  378. : 80484ad: mov %eax,%ecx
  379. : 80484af: movl $0x4000,0x18(%esp)
  380. 4 0.0052 0 0 : 80484b7: imul %esi
  381. : 80484b9: movl $0x4000,0x14(%esp)
  382. 7 0.0091 0 0 : 80484c1: sar $0x8,%edx
  383. : 80484c4: mov %ecx,%eax
  384. : 80484c6: movl $0x1e0000,0x10(%esp)
  385. : 80484ce: sar $0x1f,%eax
  386. 4 0.0052 0 0 : 80484d1: movl $0x140000,0xc(%esp)
  387. : 80484d9: sub %eax,%edx
  388. : 80484db: movl $0xa0000,0x8(%esp)
  389. : 80484e3: lea (%edx,%edx,4),%eax
  390. 6 0.0078 0 0 : 80484e6: movl $0x804a060,(%esp)
  391. : 80484ed: shl $0x7,%eax
  392. : 80484f0: sub %eax,%ecx
  393. : 80484f2: mov %ecx,0x4(%esp)
  394. 6 0.0078 0 0 : 80484f6: call 8048850 <triC>
  395. 13 0.0168 0 0 : 80484fb: dec %ebx
  396. : 80484fc: jne 80484a0 <main+0x30>
  397. : 80484fe: mov 0x804aa10,%ebx
  398. : test(triAsm1);
  399. : 8048504: mov $0x66666667,%esi
  400. : }\
  401. : printf(#tri ": %f ms, %x\n",(clock()-start)*1000.0/CLOCKS_PER_SEC,scanline[620]);\
  402. : }
  403. :
  404. :int main() {
  405. : test(triC);
  406. : 8048509: call 8048390 <clock@plt>
  407. :}
  408. :
  409. :__extern_always_inline int
  410. :printf (__const char *__restrict __fmt, ...)
  411. :{
  412. : return __printf_chk (__USE_FORTIFY_LEVEL - 1, __fmt, __va_arg_pack ());
  413. : 804850e: mov %ebx,0x10(%esp)
  414. : 8048512: sub %edi,%eax
  415. : 8048514: movl $0x8048a80,0x4(%esp)
  416. : 804851c: mov %eax,0x24(%esp)
  417. : 8048520: movl $0x1,(%esp)
  418. : 8048527: fildl 0x24(%esp)
  419. : test(triAsm1);
  420. : 804852b: mov $0x4c4b40,%ebx
  421. : }\
  422. : printf(#tri ": %f ms, %x\n",(clock()-start)*1000.0/CLOCKS_PER_SEC,scanline[620]);\
  423. : }
  424. :
  425. :int main() {
  426. : test(triC);
  427. : 8048530: fmuls 0x8048ae4
  428. : 8048536: fdivs 0x8048ae8
  429. : 804853c: fstpl 0x8(%esp)
  430. : 8048540: call 8048370 <__printf_chk@plt>
  431. : test(triAsm1);
  432. : 8048545: call 8048390 <clock@plt>
  433. : 804854a: movl $0x3c,(%esp)
  434. : 8048551: mov %eax,%edi
  435. : 8048553: call 8048350 <srand@plt>
  436. : 8048558: nop
  437. : 8048559: lea 0x0(%esi,%eiz,1),%esi
  438. 4 0.0052 0 0 : 8048560: call 80483a0 <rand@plt>
  439. 5 0.0065 0 0 : 8048565: movl $0x4000,0x1c(%esp)
  440. : 804856d: mov %eax,%ecx
  441. : 804856f: movl $0x4000,0x18(%esp)
  442. 3 0.0039 0 0 : 8048577: imul %esi
  443. : 8048579: movl $0x4000,0x14(%esp)
  444. 12 0.0156 0 0 : 8048581: sar $0x8,%edx
  445. : 8048584: mov %ecx,%eax
  446. : 8048586: movl $0x1e0000,0x10(%esp)
  447. : 804858e: sar $0x1f,%eax
  448. 8 0.0104 0 0 : 8048591: movl $0x140000,0xc(%esp)
  449. : 8048599: sub %eax,%edx
  450. : 804859b: movl $0xa0000,0x8(%esp)
  451. : 80485a3: lea (%edx,%edx,4),%eax
  452. 2 0.0026 0 0 : 80485a6: movl $0x804a060,(%esp)
  453. : 80485ad: shl $0x7,%eax
  454. : 80485b0: sub %eax,%ecx
  455. : 80485b2: mov %ecx,0x4(%esp)
  456. 4 0.0052 0 0 : 80485b6: call 80488b0 <triAsm1>
  457. 16 0.0207 0 0 : 80485bb: dec %ebx
  458. 3 0.0039 0 0 : 80485bc: jne 8048560 <main+0xf0>
  459. : 80485be: mov 0x804aa10,%ebx
  460. : test(triAsm2);
  461. : 80485c4: mov $0x66666667,%esi
  462. : printf(#tri ": %f ms, %x\n",(clock()-start)*1000.0/CLOCKS_PER_SEC,scanline[620]);\
  463. : }
  464. :
  465. :int main() {
  466. : test(triC);
  467. : test(triAsm1);
  468. : 80485c9: call 8048390 <clock@plt>
  469. : 80485ce: mov %ebx,0x10(%esp)
  470. : 80485d2: sub %edi,%eax
  471. : 80485d4: movl $0x8048a91,0x4(%esp)
  472. : 80485dc: mov %eax,0x24(%esp)
  473. : 80485e0: movl $0x1,(%esp)
  474. : 80485e7: fildl 0x24(%esp)
  475. : test(triAsm2);
  476. : 80485eb: mov $0x4c4b40,%ebx
  477. : printf(#tri ": %f ms, %x\n",(clock()-start)*1000.0/CLOCKS_PER_SEC,scanline[620]);\
  478. : }
  479. :
  480. :int main() {
  481. : test(triC);
  482. : test(triAsm1);
  483. : 80485f0: fmuls 0x8048ae4
  484. : 80485f6: fdivs 0x8048ae8
  485. : 80485fc: fstpl 0x8(%esp)
  486. : 8048600: call 8048370 <__printf_chk@plt>
  487. : test(triAsm2);
  488. : 8048605: call 8048390 <clock@plt>
  489. : 804860a: movl $0x3c,(%esp)
  490. : 8048611: mov %eax,%edi
  491. : 8048613: call 8048350 <srand@plt>
  492. : 8048618: nop
  493. : 8048619: lea 0x0(%esi,%eiz,1),%esi
  494. 8 0.0104 0 0 : 8048620: call 80483a0 <rand@plt>
  495. 5 0.0065 0 0 : 8048625: movl $0x4000,0x1c(%esp)
  496. : 804862d: mov %eax,%ecx
  497. : 804862f: movl $0x4000,0x18(%esp)
  498. 7 0.0091 0 0 : 8048637: imul %esi
  499. : 8048639: movl $0x4000,0x14(%esp)
  500. 3 0.0039 0 0 : 8048641: sar $0x8,%edx
  501. : 8048644: mov %ecx,%eax
  502. : 8048646: movl $0x1e0000,0x10(%esp)
  503. : 804864e: sar $0x1f,%eax
  504. 8 0.0104 0 0 : 8048651: movl $0x140000,0xc(%esp)
  505. : 8048659: sub %eax,%edx
  506. : 804865b: movl $0xa0000,0x8(%esp)
  507. : 8048663: lea (%edx,%edx,4),%eax
  508. 7 0.0091 0 0 : 8048666: movl $0x804a060,(%esp)
  509. : 804866d: shl $0x7,%eax
  510. : 8048670: sub %eax,%ecx
  511. : 8048672: mov %ecx,0x4(%esp)
  512. 5 0.0065 0 0 : 8048676: call 80488ea <triAsm2>
  513. 5 0.0065 0 0 : 804867b: dec %ebx
  514. 6 0.0078 0 0 : 804867c: jne 8048620 <main+0x1b0>
  515. : 804867e: mov 0x804aa10,%ebx
  516. : test(triAsm3);
  517. : 8048684: mov $0x66666667,%esi
  518. : }
  519. :
  520. :int main() {
  521. : test(triC);
  522. : test(triAsm1);
  523. : test(triAsm2);
  524. : 8048689: call 8048390 <clock@plt>
  525. : 804868e: mov %ebx,0x10(%esp)
  526. : 8048692: sub %edi,%eax
  527. : 8048694: movl $0x8048aa5,0x4(%esp)
  528. : 804869c: mov %eax,0x24(%esp)
  529. : 80486a0: movl $0x1,(%esp)
  530. : 80486a7: fildl 0x24(%esp)
  531. : test(triAsm3);
  532. : 80486ab: mov $0x4c4b40,%ebx
  533. : }
  534. :
  535. :int main() {
  536. : test(triC);
  537. : test(triAsm1);
  538. : test(triAsm2);
  539. : 80486b0: fmuls 0x8048ae4
  540. : 80486b6: fdivs 0x8048ae8
  541. : 80486bc: fstpl 0x8(%esp)
  542. : 80486c0: call 8048370 <__printf_chk@plt>
  543. : test(triAsm3);
  544. : 80486c5: call 8048390 <clock@plt>
  545. : 80486ca: movl $0x3c,(%esp)
  546. : 80486d1: mov %eax,%edi
  547. : 80486d3: call 8048350 <srand@plt>
  548. : 80486d8: nop
  549. : 80486d9: lea 0x0(%esi,%eiz,1),%esi
  550. 3 0.0039 0 0 : 80486e0: call 80483a0 <rand@plt>
  551. 5 0.0065 0 0 : 80486e5: movl $0x4000,0x1c(%esp)
  552. : 80486ed: mov %eax,%ecx
  553. : 80486ef: movl $0x4000,0x18(%esp)
  554. 7 0.0091 0 0 : 80486f7: imul %esi
  555. : 80486f9: movl $0x4000,0x14(%esp)
  556. 6 0.0078 0 0 : 8048701: sar $0x8,%edx
  557. : 8048704: mov %ecx,%eax
  558. : 8048706: movl $0x1e0000,0x10(%esp)
  559. : 804870e: sar $0x1f,%eax
  560. 6 0.0078 0 0 : 8048711: movl $0x140000,0xc(%esp)
  561. : 8048719: sub %eax,%edx
  562. : 804871b: movl $0xa0000,0x8(%esp)
  563. 1 0.0013 0 0 : 8048723: lea (%edx,%edx,4),%eax
  564. 5 0.0065 0 0 : 8048726: movl $0x804a060,(%esp)
  565. : 804872d: shl $0x7,%eax
  566. : 8048730: sub %eax,%ecx
  567. : 8048732: mov %ecx,0x4(%esp)
  568. 12 0.0156 0 0 : 8048736: call 8048923 <triAsm3>
  569. 10 0.0130 0 0 : 804873b: dec %ebx
  570. : 804873c: jne 80486e0 <main+0x270>
  571. : 804873e: mov 0x804aa10,%ebx
  572. : test(triAsm4);
  573. : 8048744: mov $0x66666667,%esi
  574. :
  575. :int main() {
  576. : test(triC);
  577. : test(triAsm1);
  578. : test(triAsm2);
  579. : test(triAsm3);
  580. : 8048749: call 8048390 <clock@plt>
  581. : 804874e: mov %ebx,0x10(%esp)
  582. : 8048752: sub %edi,%eax
  583. : 8048754: movl $0x8048ab9,0x4(%esp)
  584. : 804875c: mov %eax,0x24(%esp)
  585. : 8048760: movl $0x1,(%esp)
  586. : 8048767: fildl 0x24(%esp)
  587. : test(triAsm4);
  588. : 804876b: mov $0x4c4b40,%ebx
  589. :
  590. :int main() {
  591. : test(triC);
  592. : test(triAsm1);
  593. : test(triAsm2);
  594. : test(triAsm3);
  595. : 8048770: fmuls 0x8048ae4
  596. : 8048776: fdivs 0x8048ae8
  597. : 804877c: fstpl 0x8(%esp)
  598. : 8048780: call 8048370 <__printf_chk@plt>
  599. : test(triAsm4);
  600. : 8048785: call 8048390 <clock@plt>
  601. : 804878a: movl $0x3c,(%esp)
  602. : 8048791: mov %eax,%edi
  603. : 8048793: call 8048350 <srand@plt>
  604. : 8048798: nop
  605. : 8048799: lea 0x0(%esi,%eiz,1),%esi
  606. 4 0.0052 0 0 : 80487a0: call 80483a0 <rand@plt>
  607. 8 0.0104 0 0 : 80487a5: movl $0x4000,0x1c(%esp)
  608. : 80487ad: mov %eax,%ecx
  609. : 80487af: movl $0x4000,0x18(%esp)
  610. 3 0.0039 0 0 : 80487b7: imul %esi
  611. : 80487b9: movl $0x4000,0x14(%esp)
  612. 8 0.0104 0 0 : 80487c1: sar $0x8,%edx
  613. : 80487c4: mov %ecx,%eax
  614. : 80487c6: movl $0x1e0000,0x10(%esp)
  615. : 80487ce: sar $0x1f,%eax
  616. : 80487d1: movl $0x140000,0xc(%esp)
  617. : 80487d9: sub %eax,%edx
  618. : 80487db: movl $0xa0000,0x8(%esp)
  619. : 80487e3: lea (%edx,%edx,4),%eax
  620. 8 0.0104 0 0 : 80487e6: movl $0x804a060,(%esp)
  621. : 80487ed: shl $0x7,%eax
  622. : 80487f0: sub %eax,%ecx
  623. : 80487f2: mov %ecx,0x4(%esp)
  624. 5 0.0065 0 0 : 80487f6: call 804896c <triAsm4>
  625. 13 0.0168 0 0 : 80487fb: dec %ebx
  626. 3 0.0039 0 0 : 80487fc: jne 80487a0 <main+0x330>
  627. : 80487fe: mov 0x804aa10,%ebx
  628. : 8048804: call 8048390 <clock@plt>
  629. : 8048809: mov %ebx,0x10(%esp)
  630. : 804880d: sub %edi,%eax
  631. : 804880f: movl $0x8048acd,0x4(%esp)
  632. : 8048817: mov %eax,0x24(%esp)
  633. : 804881b: movl $0x1,(%esp)
  634. : 8048822: fildl 0x24(%esp)
  635. : 8048826: fmuls 0x8048ae4
  636. : 804882c: fdivs 0x8048ae8
  637. : 8048832: fstpl 0x8(%esp)
  638. : 8048836: call 8048370 <__printf_chk@plt>
  639. : return 0;
  640. :}
  641. : 804883b: add $0x34,%esp
  642. : 804883e: xor %eax,%eax
  643. : 8048840: pop %ebx
  644. : 8048841: pop %esi
  645. : 8048842: pop %edi
  646. : 8048843: leave
  647. : 8048844: ret
  648. : 8048845: nop
  649. : 8048846: nop
  650. : 8048847: nop
  651. : 8048848: nop
  652. : 8048849: nop
  653. : 804884a: nop
  654. : 804884b: nop
  655. : 804884c: nop
  656. : 804884d: nop
  657. : 804884e: nop
  658. : 804884f: nop
  659. :
  660. :/home/user/prog/tri/test: file format elf32-i386
  661. :
  662. :
  663. :Disassembly of section .text:
  664. :
  665. 0804896c <triAsm4>: /* triAsm4 total: 72 0.0933 0 0 */
  666. :
  667. : pop ebp
  668. : ret
  669. :
  670. :triAsm4:
  671. : push ebp
  672. 17 0.0220 0 0 : 804896c: push %ebp
  673. : mov ebp, esp
  674. : 804896d: mov %esp,%ebp
  675. :
  676. : pusha
  677. : 804896f: pusha
  678. :
  679. : mov [stackptr], esp
  680. 31 0.0402 0 0 : 8048970: mov %esp,0x804a020
  681. :
  682. : mov edi, [ebp+0x08] ; dest
  683. : 8048976: mov 0x8(%ebp),%edi
  684. : mov ecx, [ebp+0x0c] ; cnt
  685. 1 0.0013 0 0 : 8048979: mov 0xc(%ebp),%ecx
  686. : mov edx, [ebp+0x10] ; cr
  687. 6 0.0078 0 0 : 804897c: mov 0x10(%ebp),%edx
  688. : mov esi, [ebp+0x14] ; cg
  689. 12 0.0156 0 0 : 804897f: mov 0x14(%ebp),%esi
  690. : mov esp, [ebp+0x18] ; cb
  691. 5 0.0065 0 0 : 8048982: mov 0x18(%ebp),%esp
  692. :
  693. :/home/user/prog/tri/test: file format elf32-i386
  694. :
  695. :
  696. :Disassembly of section .text:
  697. :
  698. 08048923 <triAsm3>: /* triAsm3 total: 67 0.0868 0 0 */
  699. :
  700. : pop ebp
  701. : ret
  702. :
  703. :triAsm3:
  704. : push ebp
  705. 10 0.0130 0 0 : 8048923: push %ebp
  706. : mov ebp, esp
  707. : 8048924: mov %esp,%ebp
  708. :
  709. : pusha
  710. : 8048926: pusha
  711. :
  712. : mov edx, [ebp+0x08] ; dest
  713. 36 0.0467 0 0 : 8048927: mov 0x8(%ebp),%edx
  714. : mov ecx, [ebp+0x0c] ; cnt
  715. 1 0.0013 0 0 : 804892a: mov 0xc(%ebp),%ecx
  716. : mov esi, [ebp+0x14] ; cg
  717. 13 0.0168 0 0 : 804892d: mov 0x14(%ebp),%esi
  718. : mov edi, [ebp+0x18] ; cb
  719. 7 0.0091 0 0 : 8048930: mov 0x18(%ebp),%edi
  720. :
  721. :/home/user/prog/tri/test: file format elf32-i386
  722. :
  723. :
  724. :Disassembly of section .text:
  725. :
  726. 080488b0 <triAsm1>: /* triAsm1 total: 63 0.0816 3 0.0148 */
  727. :%define dcr DWORD [ebp+0x1c]
  728. :%define dcg DWORD [ebp+0x20]
  729. :%define dcb DWORD [ebp+0x24]
  730. :
  731. :triAsm1:
  732. : push ebp
  733. 16 0.0207 0 0 : 80488b0: push %ebp
  734. : mov ebp, esp
  735. : 80488b1: mov %esp,%ebp
  736. :
  737. : pusha
  738. : 80488b3: pusha
  739. :
  740. : mov edx, [ebp+0x08] ; dest
  741. 37 0.0480 0 0 : 80488b4: mov 0x8(%ebp),%edx
  742. : mov ecx, [ebp+0x0c] ; cnt
  743. : 80488b7: mov 0xc(%ebp),%ecx
  744. : mov esi, [ebp+0x14] ; cg
  745. 6 0.0078 1 0.0049 : 80488ba: mov 0x14(%ebp),%esi
  746. : mov edi, [ebp+0x18] ; cb
  747. 4 0.0052 2 0.0098 : 80488bd: mov 0x18(%ebp),%edi
  748. :
  749. :/home/user/prog/tri/test: file format elf32-i386
  750. :
  751. :
  752. :Disassembly of section .text:
  753. :
  754. 080488ea <triAsm2>: /* triAsm2 total: 59 0.0765 3 0.0148 */
  755. : pop ebp
  756. : ret
  757. :
  758. :
  759. :triAsm2:
  760. : push ebp
  761. 19 0.0246 0 0 : 80488ea: push %ebp
  762. : mov ebp, esp
  763. : 80488eb: mov %esp,%ebp
  764. :
  765. : pusha
  766. : 80488ed: pusha
  767. :
  768. : mov edx, [ebp+0x08] ; dest
  769. 31 0.0402 0 0 : 80488ee: mov 0x8(%ebp),%edx
  770. : mov ecx, [ebp+0x0c] ; cnt
  771. : 80488f1: mov 0xc(%ebp),%ecx
  772. : mov esi, [ebp+0x14] ; cg
  773. : 80488f4: mov 0x14(%ebp),%esi
  774. : mov edi, [ebp+0x18] ; cb
  775. 9 0.0117 3 0.0148 : 80488f7: mov 0x18(%ebp),%edi