diff options
Diffstat (limited to 'output/ex99.s')
-rw-r--r-- | output/ex99.s | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/output/ex99.s b/output/ex99.s new file mode 100644 index 0000000..d75bb99 --- /dev/null +++ b/output/ex99.s @@ -0,0 +1,71 @@ +.data +.text +jal Main +li $v0 10 +syscall +foo: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 28 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + li $a0 1 + li $t9 3 + add $s0 $a0 $t9 + li $a0 2 + li $t9 4 + add $s1 $a0 $t9 + sw $s0 -28($fp) + sw $s1 -24($fp) + jalr $bar + move $a0 $v0 + move $t9 $v0 + add $s2 $a0 $t9 + move $v0 $s2 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 28 + jr $ra +bar: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 16 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + lw $s0 0($fp) + lw $s1 4($fp) + move $a0 $s1 + move $t9 $s2 + add $v0 $a0 $t9 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 16 + jr $ra +_print: + li $v0 1 # syscall: print integer + syscall + la $a0 _newline + li $v0 4 # syscall: print string + syscall + jr $ra +_error: + li $v0 4 # syscall: print string + syscall + li $v0 10 # syscall: exit + syscall +_heapAlloc: + li $v0 9 # syscall: sbrk + syscall + jr $ra +.data +.align 0 +_newline: .asciiz "\n" +_str0: .asciiz "null pointer\n" |