memo
うひゃー、これはちょっと眺めたくらいじゃとても理解するのは無理だ。
参考:
compile.scm, Intermediate tree form = IForm
gosh> (select-module gauche.internal) #<undef> gosh> (compile-p1 '(letrec ((fib (lambda (n) (if (< n 2) 1 (+ (fib (- n 2)) (fib (- n 1))))))) (fib 10))) ($letrec ((fib[3;0] ($lambda[fib;0] (n[3;0]) ($if ($asm (NUMLT2) ($lref n[3;0]) ($const 2)) ($const 1) ($asm (NUMADD2) ($call ($lref fib[3;0]) ($asm (NUMSUB2) ($lref n[3;0]) ($const 2))) ($call ($lref fib[3;0]) ($asm (NUMSUB2) ($lref n[3;0]) ($const 1))))))) ) ($call ($lref fib[3;0]) ($const 10))) #<undef>