sltu $t4,$v0,45 and sltui $t4,$v0,45

A good answer might be:

Yes. The first translates into the second.

Indexed Addressing

In addition to implementing new instructions, the extended assembler implements a new addressing mode. This is indexed addressing, a mode of addressing very useful for arrays. Here is an example:

      li    $t1,2                 # index 2
      lb    $v0,data($t1)         # $v0 = data[$t1]
      . . . 
      
data: .byte  6,34,12,-32, 90      # index zero is first

Think of the words beginning at data as an array of five bytes. Then the lw instruction loads the element of the array at index 2 (the byte that contains 12) into $v0.

The extended assembler does this the same way we have done in in past programs: basic instructions are used to add the index value in $t1 to the address symbolized by data. Here is what the assembler generates for the above code:

      ori   $t1,$0,2           # index 2
      lui   $at,4097           # $at register gets address "data"
      addu  $at,$at,$t1        # add index to $at
      lb    $v0,0($at)         # $v0 = data[$t1]
      . . . 
      
data: .byte  6,34,12,-32, 90   

The assembler generates code that uses register $at to calculate the address of the correct byte. Then, using that address, the byte is loaded into $v0.

QUESTION 11:

When does the actual address calculation take place?