summaryrefslogtreecommitdiff
path: root/src/backend/generator/expansion.scm
blob: 9fe2e0a9a3ca6b7f5afab5ff2f2e6d94d8e6632a (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
            not
            neg
            ret))


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

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

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

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