Ejercicio de formato para instrucciones de salto condicional

Anuncio
Ejercicio de formato para instrucciones de salto condicional
¿Cual es la instrucción máquina equivalente a bne $t0,$t1, dir_dest?
a) Siendo dir_dest la etiqueta de la instrucción que es la cuarta después de la de
salto.
b) Si la instrucción de salto está en la dirección 0x00400004 y la etiqueta dir_dest
vale 0x0040000C.
Da las respuestas en hexadecimal.
Solución
bne $8, $9, dir_dest = 001001 | 01000 | 01001 | desplazamiento
= 0x2509----(desp)
Sean:
-
dir_salto: la dirección de la instrucción de salto
dir_sig: la dirección de la instrucción siguiente a la de salto
dir_dest: la dirección de la instrucción destino del salto
n_instr_sig_dest: el número de instrucciones desde la instrucción siguiente a
la de salto hasta la de destino del salto
n_instr_salto_dest: el número de instrucciones desde la instrucción de salto
hasta la de destino del salto
Se tiene que
desp = n_instr_sig_dest = n_instr_salto_dest -1
Æ desp = n_instr_salto_dest -1
También
dir_dest = PC + (desp*4) = dir_sig + (desp*4) = (dir_salto +4) + (desp*4)
Æ desp = [dir_dest - (dir_salto +4)] / 4
Entonces
(a)
n_instr_salto_dest = 4 = n_instr_sig_dest + 1 = desp + 1
Æ desp = 4 -1 = 3
bne $8,$9,destino = 0x25090003
(b)
dir_dest = 0x0040000C = PC + (desp*4) = (dir_salto + 4) + (desp*4) = (0x00400004
+ 4) +(desp*4)
Æ desp*4 = 0x0040000C - 0x00400008 = 4
Æ desp = 4 / 4 = 1
bne $8,$9,destino = 0x25090001
Descargar