From 0c40996d3617183272518960d1b63f2b83c76f05 Mon Sep 17 00:00:00 2001 From: Luke Lau Date: Wed, 17 Jul 2019 23:23:16 +0100 Subject: [PATCH] Fix up codegen-add for vars --- compiler.scm | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/compiler.scm b/compiler.scm index d79a37a..76fa671 100644 --- a/compiler.scm +++ b/compiler.scm @@ -6,12 +6,17 @@ (apply printf s) (display "\n"))) -(define (codegen-add xs) +(define (codegen-add xs si env) (define (go ys) (if (null? ys) (emit "movq %rbx, %rax") (begin - (emit "addq $~a, %rbx" (car ys)) + (let ((y (car ys))) + (if (integer? y) + (emit "addq $~a, %rbx" y) + (begin + (codegen-expr y si env) + (emit "addq %rax, %rbx")))) (go (cdr ys))))) (begin (emit "movq $0, %rbx") @@ -43,7 +48,7 @@ (define (codegen-expr e si env) (cond ((and (list? e) (eq? (car e) '+)) - (codegen-add (cdr e))) + (codegen-add (cdr e) si env)) ((let? e) (codegen-let (let-bindings e) (let-body e) -- 2.30.2