el superzorro
Solución Práctica 5
Ejercicio 1 – Se desea agregar la instrucción “aas”
aas $rt, ($rs), Imm16
Esta instrucción lee una palabra de memoria desde la dirección dadapor el registro $rs y la guarda en el registro
$rt, ademas guarda en la dirección de memoria dada por $rs, el valor del registro $rt mas la constante inmediata
de 16 bits, extendida en signo. Ladescripción RTL es:
R[rt] = Mem[R[rs]]
Mem[R[rs]] = R[rt] + Sext(Imm16)]
Indique modificaciones necesarias a la sección de datos (utilice diagrama adjunto) y a la tabla de señales de
control.Realice el mínimo de modificaciones necesarias para implementar esta instrucción
R-type
ori
andi
lw
sw
beq
aas
RegDst
1
0
0
0
x
x
0
ALUSrc
0
1
1
11
0
1
MemtoReg
0
0
0
1
x
x
1
RegWr
1
1
1
1
0
0
1
MemWr
0
0
0
0
1
0
1
nPC_sel
0
0
0
0
0
1
0ExtOp
x
0
0
1
1
x
1
ALUOp
func
or
and
add
add
sub
add
UpALU
0
0
0
0
0
0
1
MSrc
x
x
x
x
1
x
0
MAdd
xx
x
x
1
1
0
Solución realizada por ayudante Javier Soto
Ejercicio 2 – Se desea agregar la instrucción “swap condicional” al procesador uniciclo:
cswap $rt, Imm16($rs)
Estainstrucción lee una palabra de memoria desde la dirección dada por la suma del registro $rs y la constante
inmediata de 16 bits Imm16 (extendida en signo a 32 bits), y la almacena en el registro $rt.Adicionalmente, y
sólo si el valor leído de memoria es distinto de cero, la instrucción almacena el valor original del registro $rt en
la dirección de memoria Imm16($rs). En otras palabras, ladescripción RTL de la instrucción es:
R[rt] ←Mem[R[rs] + Sext(Imm16)];
If (Mem[R[rs] + Sext(Imm16)] != 0)
Mem[R[rs] + Sext(Imm16)] ←R[rt]
Indique modificaciones necesarias a la sección de datos...
Regístrate para leer el documento completo.