diff options
Diffstat (limited to 'src/modules/ast/assembly-tree.scm')
-rw-r--r-- | src/modules/ast/assembly-tree.scm | 29 |
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)) |