blob: 4a36b92a7a65efd9a7e19d9ca51aef3362525972 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
(define-module (modules generator generator)
#: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))))
(define (g-function f)
(make-subroutine (g-id (function-id f))
(g-stmt (function-stmt f))))
(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))
|