Pastebin launched a little side project called VERYVIRAL.com, check it out ;-) Want more features on Pastebin? Sign Up, it's FREE!
Guest

Untitled

By: a guest on Aug 12th, 2011  |  syntax: None  |  size: 42.03 KB  |  views: 34  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  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