X-Git-Url: http://git.lukelau.me/?a=blobdiff_plain;f=codegen.scm;h=52c494bb233fb728ff907fa5fed63db57fb05478;hb=f605bff88ce12e5f4384ab308c036350bfa86cb5;hp=00e01296af20661539f8fda3d882c6fa39547092;hpb=61a99f4a9f1d169849ffc2483634a391d3b16a90;p=scheme.git diff --git a/codegen.scm b/codegen.scm index 00e0129..52c494b 100644 --- a/codegen.scm +++ b/codegen.scm @@ -46,9 +46,9 @@ (codegen-expr a si env) (emit "movq %rax, ~a(%rbp)" si) (codegen-expr b (- si wordsize) env) - (emit "subq ~a(%rbp), %rax" si) - (emit "not %rax") - (emit "andq $1, %rax")) + (emit "## ~a = ~b" a b) + (emit "cmpq ~a(%rbp), %rax" si) + (emit "sete %al")) ; 'write file handle addr-string num-bytes @@ -267,6 +267,7 @@ (emit "~a:" exit-label))) (define (codegen-expr e si env) + (emit "# ~a" e) (case (ast-type e) ('closure (codegen-closure (cadr e) (caddr e) si env)) ('app @@ -483,6 +484,8 @@ (emit "movq %rax, (%rsi)"))) (define (codegen program) + (set! cur-label 0) + (set! cur-lambda 0) (let* ((extract-res-0 (extract-strings program)) (strings (car extract-res-0)) (extract-res-1 (extract-lambdas (cdr extract-res-0)))