diff options
Diffstat (limited to 'src/backend/emitter/traverse.scm')
-rw-r--r-- | src/backend/emitter/traverse.scm | 48 |
1 files changed, 24 insertions, 24 deletions
diff --git a/src/backend/emitter/traverse.scm b/src/backend/emitter/traverse.scm index 0a5b4cc..e88f207 100644 --- a/src/backend/emitter/traverse.scm +++ b/src/backend/emitter/traverse.scm @@ -1,50 +1,50 @@ (define-module (backend emitter traverse) - #:export (prog - subrout - instr - allocate - mov - ret - neg - not - allocate - reg - stack - imm)) - - -(define (prog srout) + #:export (prog-ir + subrout-ir + instr-ir + allocate-ir + mov-ir + ret-ir + neg-ir + not-ir + allocate-ir + reg-ir + stack-ir + imm-ir)) + + +(define (prog-ir srout) (string-append/shared srout ".section .note.GNU-stack,\"\",@progbits\n")) -(define (srout label instrs) +(define (srout-ir label instrs) (format #f " .globl ~a ~a: \tpushq\t%rbp \tmovq\t%rsp, %rbp ~a" label label (apply string-append/shared instrs))) -(define (mov src dst) +(define (mov-ir src dst) (format #f "\tmovl\t~a, ~a\n" src dst)) -(define (ret) +(define (ret-ir) "\tmovq\t%rbp, %rsp \tpopq\t%rbp \tret\n") -(define (neg dst) +(define (neg-ir dst) (format #f "\tnegl\t~a\n" dst)) -(define (not dst) +(define (not-ir dst) (format #f "\tnotl\t~a\n" dst)) -(define (alloc size) +(define (alloc-ir size) (format #f "\tsubq\t$~a, %rsp\n" size)) -(define (reg r) +(define (reg-ir r) (format #f "%~a" r)) -(define (stack loc) +(define (stack-ir loc) (format #f "~a(%rbp)" loc)) -(define (imm int) +(define (imm-ir int) (format #f "$~a" int)) |