diff options
Diffstat (limited to 'src/backend/generator/expansion.scm')
-rw-r--r-- | src/backend/generator/expansion.scm | 18 |
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))) |