summaryrefslogtreecommitdiff
path: root/src/backend/ast/ir.scm
blob: 23bc87ba6af4746a426f5b09815dd129e2c680d8 (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
51
52
53
54
55
56
57
(define-module (backend ast ir)
  #:export (prog-ir
            srout-ir
	    instr-ir
            mov-ir
            stack-ir
            reg-ir
            imm-ir
            tmp-ir
            ret-ir
            neg-ir
            not-ir
            plus-ir
            minus-ir
            mult-ir
            div-ir
            mod-ir))

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

(define-syntax def-ir-nodes
  (syntax-rules ()
    ((_ names ...)
     (begin
       (define (names . args)
         (cons 'names args)) ...))))

(define-syntax def-ir-syms
  (syntax-rules ()
    ((_ names ...)
     (begin
       (define names
	 'names) ...))))

(def-ir-nodes
  prog-ir
  srout-ir
  instr-ir
  stack-ir
  reg-ir
  imm-ir
  tmp-ir)

(def-ir-syms
  neg-ir
  not-ir
  plus-ir
  minus-ir
  mult-ir
  div-ir
  mod-ir
  ret-ir
  mov-ir)