summaryrefslogtreecommitdiff
path: root/src/modules/ast/assembly-tree.scm
diff options
context:
space:
mode:
Diffstat (limited to 'src/modules/ast/assembly-tree.scm')
-rw-r--r--src/modules/ast/assembly-tree.scm29
1 files changed, 22 insertions, 7 deletions
diff --git a/src/modules/ast/assembly-tree.scm b/src/modules/ast/assembly-tree.scm
index ee3e116..3f0f1b1 100644
--- a/src/modules/ast/assembly-tree.scm
+++ b/src/modules/ast/assembly-tree.scm
@@ -4,22 +4,37 @@
subroutine?
subroutine-label
subroutine-instructions
+ subroutine-frame-size
make-instruction
instruction?
+ instruction-destination
+ set-instruction-destination
instruction-operator
- instruction-operand-1
- instruction-operand-2))
+ instruction-src-1
+ instruction-src-2
+
+ make-register
+ register?
+ register-name
+ ))
(define-record-type <subroutine>
- (make-subroutine label instrs)
+ (make-subroutine label instrs f-size)
subroutine?
(label subroutine-label)
- (instrs subroutine-instructions))
+ (instrs subroutine-instructions)
+ (f-size subroutine-frame-size))
(define-record-type <instruction>
- (make-instruction op oper1 oper2)
+ (make-instruction dest op src1 src2)
instruction?
+ (dest instruction-destination set-instruction-destination)
(op instruction-operator)
- (oper1 instruction-operand-1)
- (oper2 instruction-operand-2))
+ (src1 instruction-src-1)
+ (src2 instruction-src-2))
+
+(define-record-type <register>
+ (make-register name)
+ register?
+ (name register-name))