Modos de direccionamiento
“Un modo de direccionamiento es un procedimiento que
permite determinar un operando, o la dirección de un operando
o una instrucción”.
Como lo más frecuente es especificar la dirección donde está
almacenado el dato o la instrucción, se emplea siempre el
término modo de direccionamiento, aunque en el primer caso
(determinar directamente el operando) no está muy justificado.
Para simplificar, se denominará objeto al operando, resultado o
instrucción que se desea direccionar.
Modos de Direccionamiento
Inmediato
Directo
Indirecto
Registro
Indirecto con registro
Con desplazamiento
Pila
Significado:
MIPS es el acrónimo de "millones de instrucciones por segundo". Es una forma de
medir la potencia de los procesadores.
Direccionamiento inmediato
En el direccionamiento inmediato el objeto (un operando en este
caso) está almacenado dentro de la propia instrucción.
Por ejemplo, en el MIPS las instrucciones tipo I tienen un operando
inmediato de 16 bits:
El modo de direccionamiento más simple es incluir el valor del operando dentro de la
propia instrucción. Este modo de direccionamiento se usa para especificar constantes.
En el MIPS existen varias instrucciones, las tipo I, que incluyen una constante como
uno de sus operandos. Ejemplos de estas instrucciones son addi, ori.
Su limitación principal es el tamaño máximo disponible. En el caso del MIPS el tamaño
del valor inmediato son 16 bits. No obstante, la mayoría de las arquitecturas CISC
permiten inmediatos de varios tamaños.
Direccionamiento directo absoluto
Se especifica directamente la dirección del objeto. Puede ser:
De registro. Se especifica el número del registro interno.
De memoria. Se especifica la dirección completa.
De página base. Se especifica la parte baja de la dirección. Los bits altos están
implícitos.
En el modo de direccionamiento directo absoluto, en la instrucción se especifica la
localización del objeto.
Existen tres alternativas:
De registro. Si el dato está almacenado en alguno de los registros internos
del procesador, basta con que en la instrucción se indique el número de dicho
registro.
De memoria. Si el objeto se encuentra en la memoria, en la instrucción se
especifica la dirección completa de dicho dato. Aunque desde el punto de vista
del programador este modo de direccionamiento es muy conveniente, desde el
punto de vista del rendimiento no es el más adecuado, ya que la instrucción ha
de incluir la dirección completa del objeto.
De página base. Con el objetivo de buscar facilidad de programación sin
perjudicar las prestaciones, algunos procesadores incluyen un modo de
direccionamiento directo absoluto en el cual sólo se especifica en la instrucción
la parte baja de la dirección del objeto, estando implícita la parte alta.
Direccionamiento directo absoluto
El MIPS dispone de direccionamiento directo absoluto de registro:
Direccionamiento directo relativo
Se especifica un desplazamiento sobre una dirección de referencia.
La dirección se calcula como referencia +desplazamiento.
El desplazamiento suele ser pequeño  menos bits
El desplazamiento suele considerarse con signo.
Se complica el circuito
Según la dirección de referencia existen varios tipos de direccionamiento directo relativo.
En este modo de direccionamiento, la instrucción contiene, en lugar de la dirección absoluta del
objeto, un desplazamiento sobre una dirección de referencia.
Como generalmente basta con desplazamientos pequeños, no es necesario que el
desplazamiento sea del tamaño necesario para acceder a todo el mapa de direcciones, por lo
que en general este modo de direccionamiento precisa de menos bits que el absoluto. Como la
dirección de referencia sí suele ser del tamaño necesario para abarcar todo el mapa de
direcciones, con este modo de direccionamiento se puede acceder a cualquier posición de
memoria.
Dir. directo relativo a registro base
La dirección de referencia se almacena en un registro base
La instrucción ha de contener:
Un campo para el desplazamiento.
Otro para indicar el registro
Muy útil para acceder a estructuras de datos
Se coloca la dirección base de la estructura en el reg. base.
Se accede a cada elemento con el desplazamiento apropiado
En este modo de direccionamiento, la dirección de referencia está almacenada en un
registro base. Este registro puede ser fijo o pueden existir varios registros disponibles
para este fin, por lo que la instrucción incluirá también en estos casos un campo para
especificar dicho registro de referencia.
Dir. directo relativo a registro base
Las instrucciones de carga y almacenamiento del MIPS utilizan este modo de
direccionamiento.
las instrucciones de carga y almacenamiento del MIPS: lw, sw, lh, sh, lb y sb utilizan este
modo de direccionamiento. Como se ha dicho antes, el desplazamiento es de 16 bits y se
suma con signo al registro base, que puede ser cualquiera de los 32 registros disponibles.
Nótese que las instrucciones lw y sw accederán a los 32 bits que hay a partir de la dirección
calculada, lh y sh a los 16 bits y, por último, lb y sb accederá al byte que hay en la dirección
calculada.
Dir. directo relativo a registro índice
Es una variación del anterior:
La dirección de referencia está contenida en la instrucción.
El desplazamiento está en un registro índice.
La dirección final se calcula al igual que antes como referencia +desplazamiento
Permite acceder fácilmente a vectores de datos.
Para ello es conveniente escalar el índice.
En lugar de almacenar la dirección de referencia en un registro y usar un
desplazamiento pequeño para acceder a los datos, ahora se usa como dirección de
referencia un campo de la instrucción y como desplazamiento un registro. El
principal inconveniente de este modo de direccionamiento es que si se desea que
la dirección de referencia abarque todo el mapa de direcciones, ha de tener un
elevado número de bits.
Dir. directo relativo a registro índice
En algunas arquitecturas el registro índice se puede incrementar automáticamente.
Existen 4 posibilidades:
Pre-autoincremento. Vec[ ++i], I  I + 1 ; (ref + I)
Pre-autodecremento. Vec[ - - i ]  I - 1 ; (ref + I)
Post-autoincremento. Vec[ i ++i, (ref + I); I I + 1
Post-autodecremento. Vec[ i - -i,. (ref + I); I I - 1
Su utilidad es la de recorrer secuencialmente un vector.
Algunas arquitecturas como el 68000 o el PowerPC permiten incrementar o decrementar
automáticamente el registro índice. Existen cuatro posibilidades, aunque no todas las
arquitecturas incluyen las cuatro:
Investigar
Descargar

Diapositiva 1