inside the GHC code generator
kyra
kyra at veernet.ru
Thu Feb 23 16:37:02 EST 2006
Bulat Ziganshin wrote:
> i prefer to see the asm code. this may be because of better high-level
> optimization strategies (reusing fib values). the scheme about i say
> will combine advantages of both worlds
no strategies, plain exponential algorithm,
ocaml:
<excerpt>
_camlFibo__fib_57:
sub esp, 8
L101:
cmp eax, 5
jge L100
mov eax, 3
add esp, 8
ret
L100:
mov DWORD PTR 0[esp], eax
add eax, -4
call _camlFibo__fib_57
L102:
mov DWORD PTR 4[esp], eax
mov eax, DWORD PTR 0[esp]
add eax, -2
call _camlFibo__fib_57
L103:
mov ebx, DWORD PTR 4[esp]
add eax, ebx
dec eax
add esp, 8
ret
</excerpt>
visual C++ 7.1 (next fastest):
<excerpt>
_fib PROC NEAR
push esi
mov esi, DWORD PTR 8[esp]
cmp esi, 2
jge SHORT $L945
mov eax, 1
pop esi
ret 0
$L945:
lea eax, DWORD PTR [esi-2]
push edi
push eax
call _fib
dec esi
push esi
mov edi, eax
call _fib
add esp, 8
add eax, edi
pop edi
pop esi
ret 0
_fib ENDP
</excerpt>
also, Clean is *EXACTLY* in line with ocaml. This is interesting,
because Clean is so much similar to Haskell.
More information about the Glasgow-haskell-users
mailing list