[prev] 10 [next]

1-d Arrays in MIPS (cont)

Arrays that are local to functions are allocated space on the stack

fun:                         int fun(int x) 
   # prologue                {
   addi $sp, $sp, -4
   sw   $fp, ($sp)
   move $fp, $sp
   addi $sp, $sp, -4
   sw   $ra, ($sp)              // push a[] onto stack
   addi $sp, $sp, -40           int a[10];
   move $s0, $sp                int *s0 = a;
   # function body
   ... compute ...              // compute using s0
   # epilogue                   // to access a[]
   addi $sp, $sp, 40            // pop a[] off stack
   lw   $ra, ($sp)
   addi $sp, $sp, 4
   lw   $fp, ($sp)
   addi $sp, $sp, 4
   jr   $ra                  }