On Mar 4, 2006, at 18:05, Nicolas Cannasse wrote:

-Cj does not produce different results than -j on the Win32 build of
Parrot. Is -Cj supported on this architecture ?

Yes, it should work. It might depend on, how fib is actually written in PIR. As said this option is in a rather early state. Compiling a subroutine to machine code is currently only done, if all Parrot registers are fitting into CPU registers. The fib function below is working here on x86/linux.

Mmm - actually -C needs computed goto, which isn't supported by all C compilers. You can try:

$ ./parrot -Sj fib.pir 38
Fib(38): 63245986


Nicolas

leo

.sub main :main
        .param pmc argv
        .local int argc, n
        argc = argv
        n = 1
        unless argc == 2 goto argsok
        $S0 = argv[1]
        n = $S0
argsok:
    $P0 = getinterp
    $P0.'recursion_limit'(100000)

        .local pmc array
        array = new .FixedFloatArray
        array = 2

        $I1 = FibInt(n)
        array[0] = n
        array[1] = $I1

        $S0 = sprintf <<"END", array
Fib(%d): %d
END
        print $S0
.end

.sub FibInt
        .param int n
        unless n < 2 goto endif
        .return(1)
endif:
        .local int tmp
        tmp = n - 2
        $I0 = FibInt(tmp)
        tmp = n - 1
        tmp = FibInt(tmp)
        $I0 += tmp
        .return($I0)
.end

Reply via email to