summaryrefslogtreecommitdiff
path: root/src/modules/ast/ir.scm
blob: 3b373e5678db9602044722175de2a01901f1293b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
(define-module (modules ast ir)
  #:export (prog
            srout
            neg
            not
            mov
            stack
            reg
            imm
            tmp
            ret))

;;; Commentary:
;;;
;;; Nodes which exist to do nothing when evaluated.
;;;
;;; Code:

(define (ir-node type . args)
  (cons type args))

(define (prog func)
  (ir-node 'prog func))

(define (srout label instrs)
  (ir-node 'srout label instrs))

(define (neg dst)
  (ir-node 'neg dst))

(define (not dst)
  (ir-node 'not dst))

(define (mov dst src)
  (ir-node 'mov dst src))

(define (stack val)
  (ir-node 'stack val))

(define (reg val)
  (ir-node 'reg val))

(define (imm val)
  (ir-node 'imm val))

(define (tmp num)
  (ir-node 'tmp num))

(define (ret)
  (ir-node 'ret))