summaryrefslogtreecommitdiff
path: root/src/backend/generator/expansion.scm
blob: 1745e23e45e08e1dcf0bf04ff4069ad35cafdbba (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
(define-module (backend generator expansion)
  #:use-module (backend ast ir)
  #:use-module (backend utils merge-instructions)
  #:export (instrs-ir
            not-ir
            neg-ir
            ret-ir))


(define (instrs-ir lst)
  #f
  (list 'instrs-ir (cons 'list (merge-instr lst))))

(define (not-ir src dst) (unary 'not-ir src dst))
(define (neg-ir src dst) (unary 'neg-ir src dst))

(define (ret-ir src)
  (list (list 'mov-ir src (list 'reg-ir "eax"))
        (list 'ret-ir)))

(define (unary op src dst)
  (list (list 'mov-ir src dst)
        (list op dst)))