Logo GNU
Kodovani Předchozí Následující Obsah

32. Testovací smyčka z BCC



Je to kompilováno pod BC2.0 s optimalizacemi na max. rychost
   ;
   ;    main()
   ;
        assume  cs:_TEXT
_main   proc    near
        enter   2,0             #Tohle je opravdu hodně pomalé na pentiu
        push    si              #zbytečné...
        push    di
   ;
   ;    {int i,a=1,b=0;
   ;
        mov     si,1            #do registru se to nevešlo...
        mov     word ptr [bp-2],0
   ;
   ;     for(i=0;i<9999;i++)
   ;
        xor     di,di
        jmp     short @1@98     #To, že smyčka proběhne, už nepoznal...
@1@50:
   ;
   ;            a=a+b,b=2*a;
   ;
        mov     ax,si           #v GCC to byly 2 instrukce a tady 5...
        add     ax,word ptr [bp-2]#A leze do paměti..uprostřed cyklu...
        mov     si,ax
        shl     ax,1
        mov     word ptr [bp-2],ax
        inc     di              #cyklus neobrátil
@1@98:                          #teda další instrukce na porovnání
        cmp     di,9999
        jl      short @1@50
   ;
   ;     printf("%i\n",a);
   ;
        push    si              #Volá printf
        push    offset DGROUP:s@
        call    near ptr _printf
        pop     cx              #tady by také šlo šetřit...
        pop     cx
   ;
   ;    }
   ;
        pop     di              #a zase zbytečnosti..
        pop     si
        leave                   #až sem.
        ret


Předchozí Následující Obsah

Dotazy a připomínky ohledně stránky posílejte na hubicka@paru.cas.cz