peer review
Först och främst: koden fungerar som den ska.
Utöver det så har du kommenterat väl, du förklarar vad alla variabler är och du ger "high level"-förklaringar. Något som jag personligen skulle säga hade varit snyggt att se just då det är assembly, är en förklaring på variablerna just för en specifik kod bit så man inte behöver scrolla upp.
Exempel utan referens: (från rad 47)
then: addiu $a1, $a1, -1 # Decrease destination address by 1
lb $t0, 0($a0) # Load first character
sb $t0, 0($a1) # Store character in destination
addiu $a0, $a0, 1 # Increase first char address by 1
addiu $a2, $a2, -1 # Decrease character count by 1
bal rev # Loop back to start
Det hade varit trevligt att ha en kommentar som just här förklarade de variabler som används för att kunna snabbt referera till, exempel med referens:
then: # $a0 = x, $a1 = y, $a2 = z
addiu $a1, $a1, -1 # Decrease destination address by 1
lb $t0, 0($a0) # Load first character
sb $t0, 0($a1) # Store character in destination
addiu $a0, $a0, 1 # Increase first char address by 1
addiu $a2, $a2, -1 # Decrease character count by 1
bal rev # Loop back to start
Inget jag skulle direkt säga behöver fixas, det är huvudsakligen personlig preferens, men det är trevligt då vi inte kan skriva fina variable namn i assembly.
Utöver sådana kommentarer, om du verkligen vill göra programet fort förståerligt, så kan du lägga till kommentarer för varje subroutine som kortfattat förklarar vad just den subroutinen gör.
Summering: Allt ser ut att fungera som det ska, det är väl kommenterat och snyggt strukturerat och uppdelat i olika subroutines. Fundera om du känner att mina tips om kommentarer känns som något du vill tillföra till ditt program.