summaryrefslogtreecommitdiff
path: root/src/backend/generator/expansion.scm
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/generator/expansion.scm')
-rw-r--r--src/backend/generator/expansion.scm18
1 files changed, 8 insertions, 10 deletions
diff --git a/src/backend/generator/expansion.scm b/src/backend/generator/expansion.scm
index dd2962c..c9e4709 100644
--- a/src/backend/generator/expansion.scm
+++ b/src/backend/generator/expansion.scm
@@ -9,7 +9,6 @@
(define edx (reg-ir "edx"))
(define (instrs-ir lst)
- (display lst)
(list 'instrs-ir (cons 'list (merge-instr lst))))
(define (instr-ir op dst . srcs)
@@ -20,20 +19,19 @@
((div-ir mod-ir) (handle-binary-q/r op (car srcs) (cadr srcs) dst))))
(define (handle-ret src)
- (list (list 'instr-ir 'mov-ir src eax)
- (list 'instr-ir 'ret-ir)))
+ (list (list 'mov-ir src eax)
+ (list 'ret-ir src)))
(define (handle-unary op src dst)
(list (list 'mov-ir src dst)
(list op dst)))
(define (handle-binary op src1 src2 dst)
- (list (list 'instr-ir 'mov-ir src1 dst)
- (list 'instr-ir op src2 dst)))
+ (list (list 'mov-ir src1 dst)
+ (list op src2 dst)))
(define (handle-binary-q/r op src1 src2 dst)
- (map (lambda (x) (cons 'instr-ir x))
- (list (list 'mov-ir src1 eax)
- (list 'cdq)
- (list op src2)
- (list 'mov-ir (if (eq? op div-ir) eax edx) dst))))
+ (list (list 'mov-ir src1 eax)
+ (list 'cdq-ir)
+ (list 'div-ir src2)
+ (list 'mov-ir (if (eq? op div-ir) eax edx) dst)))