From 000b28c88bbfd1fde94b5e01ce2766230077e013 Mon Sep 17 00:00:00 2001 From: bd Date: Sun, 12 Jan 2025 15:10:23 -0700 Subject: Expansion of complex expressions into set of instructions --- src/modules/generator/generator.scm | 24 ++++++++++-------------- 1 file changed, 10 insertions(+), 14 deletions(-) (limited to 'src/modules/generator/generator.scm') diff --git a/src/modules/generator/generator.scm b/src/modules/generator/generator.scm index 4a36b92..ed00de5 100644 --- a/src/modules/generator/generator.scm +++ b/src/modules/generator/generator.scm @@ -1,23 +1,19 @@ (define-module (modules generator generator) + #:use-module (srfi srfi-9 gnu) #:use-module (modules ast syntax-tree) #:use-module (modules ast assembly-tree) #:export (g-program)) (define (g-program p) - (make-program (g-function (program-function p)))) + (g-subroutine (program-function p))) -(define (g-function f) - (make-subroutine (g-id (function-id f)) - (g-stmt (function-stmt f)))) +(define (g-subroutine s) + (g-instructions (subroutine-instructions s))) -(define (g-stmt s) - (g-expr (stmt-expr s))) - -(define (g-expr e) - ;; for now, we assume only 'return'! - (list (make-instruction "movl" (string-append/shared "$" (number->string (const-int (expr-type e)))) "%eax") - (make-instruction "ret" #f #f))) - -(define (g-id i) - (id-symbol i)) +(define (g-instructions lst) + (define (g-instruction i) + (set-instruction-destination i "foo")) + (unless (null? lst) + (begin (g-instruction (car lst)) + (g-instructions (cdr lst))))) -- cgit v1.2.3