('bool-literal (emit "movq $~a, %rax" (if e 1 0)))
('int-literal (emit "movq $~a, %rax" e))
- ('static-string (emit "movq $~a, %rax" (cadr e))) ; move label
+ ('static-string (emit "movq (~a), %rax" (cadr e))) ; move label
(else (error #f "don't know how to codegen this"))))
(let ((transformed (extract program)))
(cons strings transformed))))
-(define (codegen-string-data s)
+(define (emit-string-data s)
(emit "~a:" (car s))
(emit "\t.string \"~a\"" (cdr s)))
(emit "\t.data")
- (for-each codegen-string-data strings)))
+ (for-each emit-string-data strings)))
(define (compile-to-binary program output)
(when (not (eq? (typecheck program) 'int)) (error #f "not an int"))