Documente Academic
Documente Profesional
Documente Cultură
DIRECCIONAMIENTO
ndice
Visin abstracta del hardware
1
Formatos de instruccin
2
Modos de direccionamiento
5
Visin abstracta del hardware
Cules son las partes de un Usuario?
Visin abstracta del hardware
Es necesario aprender esta interfaz para ser capaz de
instruir a la computadora a realizar tareas
computacionales de inters. Cuando se familiarice con el
conjunto de instrucciones de una mquina.
Load Store
3 formatos:
(R) Registro
(I) Inmediato
(J) Salto
Formatos de instruccin
La simplicidad y uniformidad de los formatos de
instruccin son comunes en los modernos RISC (reduced
instruction-set computer, computadora con conjunto de
instrucciones reducido) cuya meta es ejecutar las
operaciones de uso ms comn tan rpido como sea
posible, acaso a costa de las menos comunes.
De los 64 opcodes posibles, los subconjuntos no
traslapantes se asignan a las clases de instruccin en
forma tal que el hardware puede reconocer fcilmente la
clase de una instruccin particular y, en consecuencia, la
interpretacin adecuada para los campos restantes.
Formatos de instruccin
INSTRUCCIONES REGISTER
Operan en los dos registros identificados en los
campos rs y rt y almacenan el resultado en el
registro rd.
Para tales instrucciones, el campo funcin (fn)
sirve como una extensin de los opcode, para
permitir que se definan ms operaciones y que
se use el campo cantidad de corrimiento (sh) en
instrucciones que especifican una cantidad de
corrimiento constante.
Formatos de instruccin
INSTRUCCIONES INMEDIATE
Son de dos variedades diferentes, en las
instrucciones inmediato:
1) El campo operando de 16 bits (en los bits 0-
15) retiene un entero que juega el mismo papel
que rt en las instrucciones de tipo R (la operacin
especificada se realiza en el contenido del
registro rs y el operando inmediato el resultado
se almacena en el registro rt).
Formatos de instruccin
INSTRUCCIONES INMEDIATE
2)En las instrucciones load, store o branch, el
campo de 16 bits se interpreta como un offset
(desplazamiento), o direccin relativa, que se
debe agregar al valor base en el registro rs
(contador de programa) para obtener una
direccin de memoria para lectura o escritura
(transferencia de control).
Formatos de instruccin
INSTRUCCIONES INMEDIATE
Para accesos de datos, el offset se interpreta
como el nmero de bytes hacia adelante
(positivo) o hacia atrs (negativo) en relacin con
la direccin base. Para la instruccin branch, el
offset est en palabras, dado que las
instrucciones siempre ocupan palabras de
memoria completa de 32 bits.
Formatos de instruccin
INSTRUCCIONES JUMP
Provocan transferencia de control incondicional a
la instruccin en la direccin especificada.
Puesto que las direcciones MiniMIPS tienen 32
bits de ancho, mientras que en el campo
direccin (address) de una instruccin de tipo J
slo estn disponibles 26 bits, se usan dos
convenciones.
Formatos de instruccin
INSTRUCCIONES JUMP
Primera, se supone que el campo de 16 bits
porta una direccin de palabra en oposicin a
una direccin de byte; por tanto, el hardware liga
dos 0 al extremo derecho del campo address de
26 bits para derivar una direccin de palabra de
28 bits.
Los cuatro bits an perdidos se ligan al extremo
izquierdo de la direccin de 28 bits en una forma
que se describir mas adelante
Aritmtica simple e instrucciones lgicas
Las instrucciones lgicas operan en un par de
operando sobre una base bit a bit. Las
instrucciones lgicas en MiniMIPS incluyen las
siguientes:
and $t0,$s0,$s1 # fija $t0 en ($s0) ^ ($s1)
or $t0,$s0,$s1 # fija $t0 en ($s0) ($s1)
xor $t0,$s0,$s1 # fija $t0 en ($s0) ($s1)
nor $t0,$s0,$s1 # fija $t0 en (($s0) ($s1))
Aritmtica simple e instrucciones lgicas
Usualmente, un operando de una operacin aritmtica o
lgica es constante. Aunque es posible colocar esta
constante en un registro y luego realizar la operacin
deseada en dos registros, sera ms eficiente usar
instrucciones que especificaran de manera directa la
constante deseada en una instruccin de formato I.
addi $t0,$s0,61 # fija $t0 en ($s0)+61 (decimal)
No existe subi
Aritmtica simple e instrucciones lgicas
Tres de las instrucciones lgicas recin
introducidas tambin tienen versiones inmediatas
o de formato I:
andi $t0,$s0,61 # fija $t0 en ($s0) 61
ori $t0,$s0,61 # fija $t0 en ($s0) 61
xori $t0,$s0,0x00ff # fija $t0 en ($s0) 0x00ff
Opcode 12(001100)
Andi 13(001101)
Oir 14(001110)
Aritmtica simple e instrucciones lgicas
Ejemplo 1
Una palabra de 32 bits en $s0 retiene un byte de datos en
las posiciones de bit 0-7 y una bandera de estado (status
flag) en la posicin de bit 10. Otros bits en la palabra
tienen valores arbitrarios (impredecibles). Desempaque la
informacin en esta palabra, coloque el byte de datos en
el registro $t0 y la bandera de estado en el registro $t1. Al
fi nal, el registro $t0 debe retener un entero en [0, 255]
correspondiente al byte de datos y el registro $t1 debe
retener un valor distinto de cero si la bandera de estado
es 1.
Aritmtica simple e instrucciones lgicas
Ejemplo 1 Solucin
Los campos de una palabra se pueden extraer al operar AND la
palabra con una mscara (mask) predefinida, una palabra que
tenga 1 en las posiciones de bit de inters y 0 en cualquier otra
parte. Por ejemplo, al operar AND la palabra con 0x000000ff
(que en binario tiene 1 slo en sus ocho posiciones de bit
menos significativas) tiene el efecto de extraer el byte de la
extrema derecha. Cualquier bit de bandera deseado se puede
extraer de forma similar a travs de operar AND con una
mscara que tenga un solo 1 en la posicin deseada. Por ende,
las siguientes dos instrucciones logran lo que se requiere:
Implcito $ra
$ra
Direccionamiento El
El operando
operando sese proporciona
proporciona en
en la
la instruccin
instruccin en
en si
si misma
misma
Direccionamiento El
El operando
operando se
se toma
toma de,
de, oo resulta
resulta colocado
colocado en
en un
un registro
registro especifico.
especifico.
por registro
Direccionamiento El
El operando
operando esta
esta en
en memoria
memoria yy su
su ubicacin
ubicacin se
se calcula
calcula al
al agregar
agregar un
un offset
offset
de base Lw
Lw yy sw
sw
Direccionamiento Igual
Igual al
offset
al de
offset se
de base
base pero
pero el
se adiciona
adiciona con
el registro
con dos
registro siempre
dos 00 en
siempre es
en el
es el
el extremo
el contador
contador del
extremo derecho.
derecho.
del programa
programa yy el
el
relativo al PC Branch
Branch
Direccionamiento Debido
Debido que
que solo
solo contamos
instrucciones,
instrucciones, se
contamos con
se hace
hace un
con 26
un salto
26 bits
salto de
bits yy los
de relleno
relleno al
los directos
directos manejan
al programa
manejan hasta
programa de
de la
hasta 32
32
la izquierda.
izquierda.
seudodirecto
Modos de direccionamiento
Modos de direccionamiento
Instrucciones minimips (20)
Modos de direccionamiento
Ejemplo 1
Cmo encontrar el valor mximo en una lista de
nmeros Una lista de enteros que se almacena
en memoria comienza en la direccin dada en el
registro $s1. La longitud de la lista se
proporciona en el registro $s2. Escriba una
secuencia de instrucciones MiniMIPS de la tabla
5.1 para encontrar el entero ms grande en la
lista y copiarlo en el registro $t0.
Modos de direccionamiento
Ejemplo 1 - Solucin
Se examinan todos los elementos de la lista A y se usa
$t0 para mantener el entero ms grande identificado
hasta el momento (inicialmente, A[0]). En cada paso se
compara un nuevo elemento de la lista con el valor en $t0
y se actualiza el ltimo si es necesario.
Modos de direccionamiento
Ejemplo 1 - Solucin
lw $t0,0($s1) # inicializa mximo en A[0]
addi $t1,$zero,0 # inicializa ndice i a 0
loop: add $t1,$t1,1 # incrementa el ndice i en 1
beq $t1,$s2,done # si todos los elementos examinados, salir
add $t2,$t1,$t1 # calcular 2i en $t2
add $t2,$t2,$t2 # calcular 4i en $t2
add $t2,$t2,$s1 # de la direccin de A[i] en $t2
lw $t3,0($t2) # cargar valor de A[i] en $t3
slt $t4,$t0,$t3 # mximo < A[i]?
beq $t4,$zero,loop # si no, repetir sin cambio
addi $t0,$t3,0 # si s, A[i] es el nuevo mximo
j loop # cambio completo; ahora repetir
done: ... # continuacin del programa
PROCEDIMIENTOS Y
DATOS