summaryrefslogtreecommitdiff
path: root/src/backend/generator/assembly.scm
blob: 8a110f3f02f745ee976c4177d8e13cbc7264bd6c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
(define-module (backend generator assembly)
  #:use-module (backend ast ir)
  #:use-module (backend utils assign-stack)
  #:use-module (backend utils merge-instructions)
  #:export (instrs
            mov))


(define (instrs lst)
  (cons 'list (cons (list 'alloc (abs (get-frame-size)))
                    (merge-instr lst))))

(define (mov src dst)
  (if (and (eq? 'stack (car dst))
           (eq? 'stack (car src)))
      (append (list (list 'mov src (reg "r10d")))
              (list (list 'mov (reg "r10d") dst)))
      (list 'mov src dst)))