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
Dotazy a připomínky ohledně stránky posílejte na hubicka@paru.cas.cz