diff options
| author | Elizabeth Alexander Hunt <me@liz.coffee> | 2026-07-02 11:55:17 -0700 |
|---|---|---|
| committer | Elizabeth Alexander Hunt <me@liz.coffee> | 2026-07-02 11:55:17 -0700 |
| commit | 6bf4b90c90f15f4ab60833bddf5b5756d1a6b1f6 (patch) | |
| tree | ed97e39ec77c5231ffd2c394493e68d00ddac5a4 /Homework/cs5300/compiler/p5-compiler/data/test4.asm | |
| download | misc-undergrad-6bf4b90c90f15f4ab60833bddf5b5756d1a6b1f6.tar.gz misc-undergrad-6bf4b90c90f15f4ab60833bddf5b5756d1a6b1f6.zip | |
Diffstat (limited to 'Homework/cs5300/compiler/p5-compiler/data/test4.asm')
| -rw-r--r-- | Homework/cs5300/compiler/p5-compiler/data/test4.asm | 118 |
1 files changed, 118 insertions, 0 deletions
diff --git a/Homework/cs5300/compiler/p5-compiler/data/test4.asm b/Homework/cs5300/compiler/p5-compiler/data/test4.asm new file mode 100644 index 0000000..978e71e --- /dev/null +++ b/Homework/cs5300/compiler/p5-compiler/data/test4.asm @@ -0,0 +1,118 @@ +# All program code is placed after the +# .text assembler directive +.text + +# Declare main as a global function +.globl main + +j main +main: +# Entering a new scope. +# Symbols in symbol table: +# a +# println +# b +# Update the stack pointer. +addi $sp $sp 0 +# println +la $a0 string_0 +li $v0 4 +syscall +la $a0 newline +li $v0 4 +syscall +li $t0 -4 +add $t0 $t0 $sp +li $t1 3 +sw $t1 0($t0) +li $t0 -8 +add $t0 $t0 $sp +li $t1 2 +sw $t1 0($t0) +# Entering a new scope. +# Symbols in symbol table: +# a +# println +# Update the stack pointer. +addi $sp $sp -8 +li $t0 -4 +add $t0 $t0 $sp +li $t1 5 +sw $t1 0($t0) +li $t0 -4 +add $t0 $t0 $sp +lw $t0 0($t0) +li $t1 0 +add $t1 $t1 $sp +lw $t1 0($t1) +add $t2 $t0 $t1 +# println +move $a0 $t2 +li $v0 1 +syscall +la $a0 newline +li $v0 4 +syscall +# Entering a new scope. +# Symbols in symbol table: +# println +# b +# Update the stack pointer. +addi $sp $sp -4 +li $t0 -4 +add $t0 $t0 $sp +li $t1 9 +sw $t1 0($t0) +li $t0 0 +add $t0 $t0 $sp +li $t1 2 +# Negation +sub $t1, $zero, $t1 +sw $t1 0($t0) +li $t0 0 +add $t0 $t0 $sp +lw $t0 0($t0) +li $t1 -4 +add $t1 $t1 $sp +lw $t1 0($t1) +add $t2 $t0 $t1 +# println +move $a0 $t2 +li $v0 1 +syscall +la $a0 newline +li $v0 4 +syscall +# Exit scope. +addi $sp $sp 4 +li $t0 0 +add $t0 $t0 $sp +li $t1 4 +sw $t1 0($t0) +# Exit scope. +addi $sp $sp 8 +li $t0 -4 +add $t0 $t0 $sp +lw $t0 0($t0) +li $t1 -8 +add $t1 $t1 $sp +lw $t1 0($t1) +add $t2 $t0 $t1 +# println +move $a0 $t2 +li $v0 1 +syscall +la $a0 newline +li $v0 4 +syscall +# Exit scope. +addi $sp $sp 0 +li $v0 10 +syscall + +# All memory structures are placed after the +# .data assembler directive +.data + +newline: .asciiz "\n" +string_0: .asciiz "This program prints 7 7 7" |
