(define-module (backend generator assembly) #:use-module (backend ast ir) #:use-module (backend utils assign-stack) #:use-module (backend utils merge-instructions) #:export (instrs-ir mov-ir)) (define (instrs-ir lst) (cons 'list (cons (list 'alloc-ir (abs (get-frame-size))) (merge-instr lst)))) (define (mov-ir src dst) (if (and (eq? 'stack-ir (car dst)) (eq? 'stack-ir (car src))) (append (list (list 'mov-ir src (reg-ir "r10d"))) (list (list 'mov-ir (reg-ir "r10d") dst))) (list 'mov-ir src dst)))