summaryrefslogtreecommitdiff
path: root/src/backend/ast/ir.scm
blob: 73911abc74cfaa1ea07012d5ef706b41b7f5d2ab (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
58
59
60
61
62
(define-module (backend ast ir)
  #:export (prog-ir
            srout-ir
            instr-ir
            mov-ir
            stack-ir
            reg-ir
            imm-ir
            tmp-ir
            ret-ir
            cdq-ir
            neg-ir
            not-ir
            plus-ir
            minus-ir
            mult-ir
            div-ir
            mod-ir

            def-ir-nodes
            def-ir-syms))

;;; 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
  mov-ir
  stack-ir
  reg-ir
  imm-ir
  tmp-ir
  cdq-ir)

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