# # simple example demonstrating loop and array use # # Author: B. Massingill # .text .globl main main: # # opening linkage (save return address) # addi $sp,$sp,-4 sw $ra,0($sp) # # C version: # # static int A[10]; # for (int i = 0; i < 10; ++i) # A[i] = i; # # register usage: # i $s0 # 10 $s1 # A $s2 # add $s0, $zero, $zero addi $s1, $zero, 10 la $s2, A loop: slt $t0, $s0, $s1 beq $t0, $zero, end add $t1, $s0, $s0 # $t1 has 2*i add $t1, $t1, $t1 # $t1 has 4*i add $t1, $t1, $s2 # $t1 has &A[i] sw $s0, 0($t1) addi $s0, $s0, 1 j loop end: # # closing linkage (get return address and restore stack pointer) # lw $ra,0($sp) addi $sp,$sp,4 jr $ra .end main .data A: .word 0, 0, 0, 0, 0, 0, 0, 0, 0, 0