### A good answer might be:

    #  main()
    #  {
    #    int a;
    #    a = mysub( 6 );
    #    print( a );
    #  }
             .text
             .globl  main
    main:
                                      # prolog
             sub     $sp,$sp,4        #   1. Push return address
             sw      $ra,($sp)
             sub     $sp,$sp,4        #   2. Push caller's frame pointer
             sw      $ra,($sp)

                                      #   3. No S registers to push

             addiu   $fp,$sp,4        #   4. $fp = $sp + space_for_variables

             move    $sp,$fp          #   5. $sp = $fp

                                      # subroutine call
                                      #   1. No T registers to push
             li      $a0,6            #   2. Put argument into $a0
             jal     mysub            #   3. Jump and link to subroutine

                                      # return from subroutine

             . . . .

                                      # epilog
             jr      $ra              # return to OS

# Prolog for `mysub()`

Of course, `mysub` starts with a subroutine prolog. There are two variables, so space is assigned to them on the stack.

    #  int mysub( int arg )
    #  {
    #    int b,c;                     // b: 0($fp)
    #                                 // c: 4($fp)
    #    b = arg*2;
    #    c = b + 7;
    #
    #    return c;
    #  }
             .text
             .globl  ______
    ______:
                                      # prolog
             sub     $sp,$sp,4        #   1. Push return address
             sw      $ra,($sp)
             sub     $sp,$sp,4        #   2. Push caller's frame pointer
             sw      $fp,($sp)

             ____    ___,___,___      #   3. Push register $s1

             ____    ___,_____

             sub    $fp,$sp,____     #   4. $fp = $sp - space_for_variables

             move   $sp,$fp          #   5. $sp = $fp

             . . . .

             jr      $ra              # return to caller

The subroutine could be written without using `$s1`. It is used to show how linkage works.

### QUESTION 11:

Fill in those blanks.