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