310 likes | 720 Views
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”.
E N D
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 decrementarautomáticamente el registro índice. Existen cuatro posibilidades, aunque no todas las arquitecturas incluyen las cuatro: