# All program code is placed after the # .text assembler directive .text # Declare main as a global function .globl main j main add: # Entering a new scope. # Symbols in symbol table: # println : 0 # x : -4 # y : -8 # return : -12 # Update the stack pointer. addi $sp $sp 0 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 # symbol table size - -12 sw $t2 -12($sp) # Exit scope. addi $sp $sp 0 jr $ra add2: # Entering a new scope. # Symbols in symbol table: # println : 0 # x : -4 # y : -8 # return : -12 # Update the stack pointer. addi $sp $sp 0 move $t0 $ra sw $t0 -16($sp) move $t1 $ra sw $t0 -16($sp) sw $t1 -20($sp) li $t2 -4 add $t2 $t2 $sp lw $t2 0($t2) sw $t2 -24($sp) li $t2 -8 add $t2 $t2 $sp lw $t2 0($t2) sw $t2 -28($sp) add $sp $sp -20 jal add add $sp $sp 20 lw $t0 -16($sp) lw $t1 -20($sp) # symbol table size - -28 lw $t2 -32($sp) move $ra $t1 sw $t2 -20($sp) li $t1 1 sw $t1 -24($sp) add $sp $sp -16 jal add add $sp $sp 16 lw $t0 -16($sp) # symbol table size - -24 lw $t1 -28($sp) move $ra $t0 # symbol table size - -12 sw $t1 -12($sp) # Exit scope. addi $sp $sp 0 jr $ra main: # Entering a new scope. # Symbols in symbol table: # println : 0 # Update the stack pointer. addi $sp $sp 0 # println la $a0 string_0 li $v0 4 syscall la $a0 newline li $v0 4 syscall move $t0 $ra sw $t0 -4($sp) li $t1 2 sw $t1 -8($sp) li $t1 4 sw $t1 -12($sp) add $sp $sp -4 jal add2 add $sp $sp 4 lw $t0 -4($sp) # symbol table size - -12 lw $t1 -16($sp) move $ra $t0 # println move $a0 $t1 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"