# Consequences of using the `jal` instruction. # abiramn@cse.unsw.edu.au, June 2025 ############################################################################### main: # [header comment] main__prologue: main__body: li $v0, 4 # syscall 4: print_string la $a0, main_hello_str # syscall # printf("Hello from main\n") move $s0, $ra jal foo main__epilogue: li $v0, 0 # move $ra, $s0 jr $ra # return 0; ############################################################################### foo: # [header comment] foo__prologue: foo__body: li $t0, 1521 li $v0, 4 # syscall 4: print_string la $a0, foo_hello_str # syscall # printf("Hello from foo\n") foo__epilogue: jr $ra # return to caller ############################################################################### .data main_hello_str: .asciiz "Hello from main\n" foo_hello_str: .asciiz "Hello from foo\n" .space 1000