Mips 4000 psp

Estoy aqui pegandome con el lenguaje ensamblador pero por mas que busco informacion no se como tomar el siguiente codigo:
Que pasa realmente en esta linea?
addiu $s0, $a0, loc_0 Estamos diciendo que s0= a0+ loc_0? pero no he encontrado informacion sobre operaciones con funciones en addiu todas dicen que es un valor immediato. He llegado a pensar que el valor de loc_0 es el valor v0 que devuelve la funcion. Eso signifcaria que se salta a la funcion?

loc_0 (no me es importante se lo que dice el codigo pero era para que vierais que era una funcion)
addiu $SP, -16
sw $ra, 12($sp)
lui $v1, 0
sw $s2, 8($sp)
lui $s2, 0
sw $s1, 4($sp)
addiu $s1, $v1, loc_40
sw $s0, 0($sp)
move $s0, $zero


Y la ultima pregunta es con respecto al delay slot, he estado leyendo que tras un salto siempre hay un delay slot.
En caso de por ejemplo tubieramos lo siguiente?
lui $sv1 = 0 o lui $sv1 = 1
bnez $v1, loc_24
addiu $s1, 4
lui $v1, 0
Existe delay slot tambien en un salto por condicional? o solo existen delays por las instrucciones j y derivados?
Si existe delay slot por condicional? en caso del caso rojo s1 valdria 4
y en el caso de verde ???? s1 valdria 1 o 4?
Quiero decir si el delay slot se lee o se salta cuando no se va a producir el salto???
0 respuestas