7/24/2019 Cap4ModDir[1].pdf
1/34
ICAIdea
Estructura de Computadores
Cap. 4: Repertorio deinstrucciones. Direccionamiento y
formatos.
Jos Daniel Muoz Fras
Universidad Pontificia Comillas. ETSI ICAI.
Departamento de Electrnica y Automtica
Estructura de Computadores Cap. 4: Repertorio de instrucciones. Direccionamiento y formatos. p.1/35
ICAIdea
ndice
1. Introduccin.
2. Direccionamiento inmediato.
3. Direccionamiento directo absoluto.
4. Direccionamiento directo relativo.a) Dir. directo relativo a registro base.
b) Dir. directo relativo a registro ndice.
c) Dir. directo relativo a pila.
d) Dir. directo relativo al PC.
5. Direccionamiento pseudodirecto del MIPS.
6. Direccionamiento indirecto.
Estructura de Computadores Cap. 4: Repertorio de instrucciones. Direccionamiento y formatos. p.2/35
7/24/2019 Cap4ModDir[1].pdf
2/34
ICAIdea
Introduccin
Modo de direccionamiento = procedimiento para
determinar: Un operando. La direccin de un operando. La direccin de una instruccin.
Estructura de Computadores Cap. 4: Repertorio de instrucciones. Direccionamiento y formatos. p.3/35
Segn (de Miguel Anasagasti, 2000): Un modo de direccionamiento es un procedimiento quepermite determinar un operando, o la direccin de un operando o una instruccin. Como lo msfrecuente es especificar la direccin donde est almacenado el dato o la instruccin, se empleasiempre el trmino modo de direccionamiento, aunque en el primer caso (determinar directamenteel operando) no est muy justificado.
Para simplificar, se denominar objeto al operando, resultado o instruccin que se desea di-reccionar.
En la siguiente transparencia se muestra una clasificacin de los distintos modos de direc-
cionamiento usados en los procesadores. No obstante hay que resaltar que cada procesador incluyeun subconjunto de estos modos de direccionamiento.
7/24/2019 Cap4ModDir[1].pdf
3/34
ICAIdea
Introduccin Inmediato. Directo:
Absoluto:
De registro.
De memoria.
De pgina base. Relativo:
A un registro.
A un reg. ndice
A pila.
Al contador de programa.
Indirecto. Implcito.
Estructura de Computadores Cap. 4: Repertorio de instrucciones. Direccionamiento y formatos. p.4/35
Aunque cada modo de direccionamiento se expondrn en detalle a lo largo del captulo, pode-mos introducir aqu su significado de forma somera:
Inmediato: El operando se incluye en la propia instruccin. En el MIPS, este modo dedireccionamiento se usa para el segundo operando de las instruccionesaddi,ori, etc.
Directo: Se indica en la instruccin la direccin del objeto. Por ejemplo el MIPS utiliza elmodo relativo a un registro para las instrucciones de carga y almacenamiento.
Indirecto: Se indica una direccin en la que se encuentra la direccin del objeto. Este
modo es til para el manejo de punteros. No obstante algunas arquitecturas como el MIPSno lo incluyen.
Implcito: El objeto est siempre en un lugar predeterminado que depende de la instruccin.Por ejemplo en el MIPS la instruccinmultno necesita un registro destino, pues siempredeja su resultado en los registros hiylo.
Ejercicio
En un programa MIPS es necesario cargar el dato cuya direccin est almacenada en la posi-cin 0x10007000. Si el registro gpcontiene el valor 0x10008000, escriba la secuencia de instruc-ciones MIPS para cargar dicho dato en el registro s0.
7/24/2019 Cap4ModDir[1].pdf
4/34
7/24/2019 Cap4ModDir[1].pdf
5/34
ICAIdea
Direccionamiento inmediato
En el direccionamiento inmediato el objeto (un
operando en este caso) est almacenadodentro dela propia instruccin.
Por ejemplo, en el MIPS las instrucciones tipo I tienenun operando inmediato de 16 bits:
6 bits 5 bits 16 bits5 bits
Tipo I op rs rt Inmediato
Estructura de Computadores Cap. 4: Repertorio de instrucciones. Direccionamiento y formatos. p.6/35
El modo de direccionamiento ms simple es incluir el valor del operando dentro de la propiainstruccin. Este modo de direccionamiento se usa para especificar constantes. En el MIPS existenvarias instrucciones, las tipo I, que incluyen una constante como uno de sus operandos. Ejemplosde estas instrucciones sonaddi,ori.
Su limitacin principal es el tamao mximo disponible. En el caso del MIPS el tamao delvalor inmediato son 16 bits. No obstante, la mayora de las arquitecturas CISC permiten inmedi-atos de varios tamaos. Por ejemplo el Pentium permite constantes inmediatas de 8, 16 o 32 bits. Elproblema de esta aproximacin es que las instrucciones se hacen de tamao variable, lo que com-
plica el paralelismo. En el caso del Pentium, segn sea la longitud del inmediato, la instruccinpuede ocupar 16, 24 o 40 bits. Esto es debido a que en este caso la instruccin se compone de unprimer byte en el que incluye el cdigo de operacin seguido inmediatamentedel dato inmediatode 8, 16 o 32 bits.
7/24/2019 Cap4ModDir[1].pdf
6/34
ICAIdea
Direccionamiento directo absoluto
Se especifica directamente la direccin del objeto.
Puede ser: De registro. Se especifica el nmero del registro
interno. De memoria. Se especifica la direccin completa. De pgina base. Se especifica la parte baja de la
direccin. Los bits altos estn implcitos.
Estructura de Computadores Cap. 4: Repertorio de instrucciones. Direccionamiento y formatos. p.7/35
En el modo de direccionamiento directo absoluto, en la instruccin se especifica la localizacindel objeto. Existen tres alternativas:
De registro. Si el dato est almacenado en alguno de los registros internos del procesador,basta con que en la instruccin se indique el nmero de dicho registro.
De memoria. Si el objeto se encuentra en la memoria, en la instruccin se especifica ladireccin completa de dicho dato. Aunque desde el punto de vista del programador estemodo de direccionamiento es muy conveniente, desde el punto de vista del rendimientono es el ms adecuado, ya que la instruccin ha de incluir la direccin completa del
objeto. As, en el caso de un procesador con un mapa de direcciones de 32 bits, como porejemplo el Pentium, son necesarios 32 bits para especificar la direccin del objeto, apartede los bits necesarios para codificar el resto de la instruccin. No obstante, convienedestacar que este tipo de direccionamiento es muy conveniente en los saltos si se deseaabarcar toda la memoria.
De pgina base. Con el objetivo de buscar facilidad de programacin sin perjudicar lasprestaciones, algunos procesadores incluyen un modo de direccionamiento directo absolutoen el cual slo se especifica en la instruccin la parte baja de la direccin del objeto, estandoimplcita la parte alta. Por ejemplo en el MC6800, que tiene un bus de direcciones de 16bits, se puede especificar una direccin absoluta con slo 8 bits, poniendo el procesador
los 8 bits ms significativos a cero. Esto permite que los accesos a los primeros 256 bytesde la memoria (pgina base o pgina cero) requieran instrucciones ms cortas (y por tantoms rpidas).
7/24/2019 Cap4ModDir[1].pdf
7/34
ICAIdea
Direccionamiento directo absoluto
El MIPS dispone de direccionamiento directo absoluto
de registro:
Tipo R
6 bits 5 bits 5 bits 5 bits 6 bits5 bits
shamtrs=2 rt rd functop
31
0
1
2
Estructura de Computadores Cap. 4: Repertorio de instrucciones. Direccionamiento y formatos. p.8/35
De los modos de direccionamiento directo absoluto discutidos en la transparencia anterior, elMIPS slo dispone del direccionamiento directo absoluto de registro, que tambin se denominapara simplificar direccionamiento de registro.
Como se puede apreciar en la transparencia, el cdigo de operacin incluye un campo de 5bits para poder direccionar cada uno de los 32 registros internos que dispone el MIPS.
7/24/2019 Cap4ModDir[1].pdf
8/34
ICAIdea
Direccionamiento directo relativo
Se especifica un desplazamiento sobre una direccinde referencia.
La direccin se calcula como referencia +desplazamiento.
El desplazamiento suele ser pequeo
menosbits.
El desplazamiento suele considerarse con signo. Se complica la circuitera (sumador adicional).
Segn la direccin de referencia existen varios tiposde direccionamiento directo relativo.
Estructura de Computadores Cap. 4: Repertorio de instrucciones. Direccionamiento y formatos. p.9/35
En este modo de direccionamiento, la instruccin contiene, en lugar de la direccin absolutadel objeto, un desplazamiento sobre una direccin de referencia.
Como generalmente basta con desplazamientos pequeos, no es necesario que el desplaza-miento sea del tamao necesario para acceder a todo el mapa de direcciones, por lo que en generaleste modo de direccionamiento precisa de menos bits que el absoluto. Como la direccin de refer-encia s suele ser del tamao necesario para abarcar todo el mapa de direcciones, con este modo dedireccionamiento se puede acceder a cualquier posicin de memoria.
Adems, debido al principio de localidad de los datos, cuando se accede a un dato, lo ms
probable es que los siguientes datos estn cerca de l, por lo que la direccin de referencia nosuele ser necesario cambiarla para cada dato. Esto permite una mayor velocidad de ejecucin, yaque para acceder a cada dato slo es necesario especificar en la instruccin el desplazamiento, queocupa muchos menos bits que la direccin completa.
El nico inconveniente de este modo de direccionamiento es la necesidad de complicar elhardware para incluir un sumador que sume la direccin de referencia ms el desplazamiento.No obstante, aunque puede pensarse que el tiempo empleado en calcular la suma empeorar elrendimiento, en realidad dicho tiempo no suele ser significativo.
Por ltimo conviene destacar que en la mayora de los procesadores el desplazamiento se sumacon signo, lo que permite acceder a datos por encima y por debajo de la direccin de referencia.
Segn la direccin de referencia utilizada, existen varios tipos de direccionamiento directo
relativo, los cuales se exponen a continuacin.
7/24/2019 Cap4ModDir[1].pdf
9/34
ICAIdea
Dir. directo relativo a registro base
La direccin de referencia se almacena en un registrobase.La instruccin ha de contener:
Un campo para el desplazamiento. Otro para indicar el registro.
Muy til para acceder a estructuras de datos:
Se coloca la direccin base de la estructura en elreg. base. Se accede a cada elemento con el
desplazamiento apropiado
Estructura de Computadores Cap. 4: Repertorio de instrucciones. Direccionamiento y formatos. p.10/35
En este modo de direccionamiento, la direccin de referencia est almacenada en un registrobase. Este registro puede ser fijo o pueden existir varios registros disponibles para este fin, porlo que la instruccin incluir tambin en estos casos un campo para especificar dicho registro dereferencia. Por ejemplo, en el caso del MIPS se pueden usar como registros base cualquiera de los32 registros de propsito general.
El desplazamiento usado vara de unas arquitecturas a otras. Por ejemplo en el MIPS es siem-pre de 16 bits con signo. En el Pentium en cambio puede ser de 8, 16 y 32 bits. Desplazamientospequeos implican un rango de variables accesibles tambin pequeo, pero al mismo tiempo nece-
sitan menos bits para codificarlos. En el Pentium, como el tamao de instruccin es variable, eldesplazamiento se puede adaptar la longitud necesaria en cada caso. En el caso del MIPS, comoel tamao de instruccin est fijado a 32 bits, el desplazamiento tambin se ha fijado al mximodisponible, que son 16 bits.
Este tipo de direccionamiento es muy til cuando se necesita acceder a una serie de variablesque estn situadas cerca, como por ejemplo una estructura de datos en C. En estos casos se sita ladireccin de comienzo de la estructura en el registro base y se vara el desplazamiento para accedera cada una de las variables de la estructura.
7/24/2019 Cap4ModDir[1].pdf
10/34
ICAIdea
Dir. directo relativo a registro base
Las instrucciones de carga y almacenamiento del
MIPS utilizan este modo de direccionamiento.
6 bits 5 bits 16 bits5 bits
Tipo I op rs=2 rt
31
0
1
2 0x70
Despl=4
0x74
Estructura de Computadores Cap. 4: Repertorio de instrucciones. Direccionamiento y formatos. p.11/35
las instrucciones de carga y almacenamiento del MIPS: lw, sw, lh, sh, lby sb utilizan estemodo de direccionamiento. Como se ha dicho antes, el desplazamiento es de 16 bits y se suma consigno al registro base, que puede ser cualquiera de los 32 registros disponibles.
Ntese que las instrucciones lw y sw accedern a los 32 bits que hay a partir de la direccincalculada,lhy sha los 16 bits y, por ltimo, lby sbacceder al byte que hay en la direccincalculada.
Si se usa el registro zerocomo registro base se dispone de un direccionamiento absoluto apgina base. Cuando el desplazamiento sea positivo se acceder a los primeros 32 kb de la memoria
y cuando sea negativo a los ltimos 32 kb de la memoria.De la misma forma, existe una convencin en el MIPS para el manejo de la memoria. Segnesta convencin, se reserva un bloque de 64 kb para almacenar los datos 1 de los programas. Dichobloque est situado a partir de la posicin 0x10000000. Para permitir un acceso fcil a esta zonade memoria, se sita el valor 0x10008000 en el registro gp(del ingles global pointer), de formaque se pueda acceder a todo el bloque mediante el desplazamiento adecuado tomando como baseel registrogp.
1En esta zona se almacenan solamente las variables globales y las locales estticas (las prece-didas por la palabra clavestaticen C). Las variables locales se almacenan en la pila.
7/24/2019 Cap4ModDir[1].pdf
11/34
ICAIdea
Dir. directo relativo a registro ndice
Es una variacin del anterior:
La direccin de referencia est contenida en lainstruccin.
El desplazamiento est en un registro ndice.
La direccin final se calcula al igual que antes comoreferencia+desplazamiento.
Permite acceder fcilmente a vectores de datos.Para ello es conveniente escalar el ndice.
Estructura de Computadores Cap. 4: Repertorio de instrucciones. Direccionamiento y formatos. p.12/35
El modo de direccionamiento relativo a registro ndice es una variacin del anterior: En lugarde almacenar la direccin de referencia en un registro y usar un desplazamiento pequeo paraacceder a los datos, ahora se usa como direccin de referencia un campo de la instruccin y comodesplazamiento un registro. El principal inconveniente de este modo de direccionamiento es quesi se desea que la direccin de referencia abarque todo el mapa de direcciones, ha de tener unelevado nmero de bits. Algunas arquitecturas como el PowerPC solucionan este problema usandoun registro para la direccin de referencia (registro base) y otro para el ndice. El Pentium va unpoco ms all permitiendo un registro base, un registro ndice y adems un desplazamiento de 8,
16 o 32 bits.El principal uso de este modo de direccionamiento es el acceso a vectores de datos. Por ellomuchas arquitecturas permiten un escalado del registro ndice, de forma que se puedan manejarvectores de datos de 16 o 32 bits automticamente. Por ejemplo el Pentium dispone de este modode direccionamiento con escalados de 1, 2 o 4 para acceder a vectores de bytes, palabras y doblespalabras (8, 16 y 32 bits en nomenclatura Pentium). As, cuando se accede a un vector de doblespalabras, el ndice se multiplica por 4, de forma que al acceder a la doble palabra i se direccionala posicin de memoria despl+4*i.
Otras arquitecturas permiten incrementar o decrementar automticamente el registro ndicepara recorrer automticamente un vector de forma secuencial, tal como se muestra en la siguientetransparencia.
7/24/2019 Cap4ModDir[1].pdf
12/34
ICAIdea
Dir. directo relativo a registro ndice
En algunas arquitecturas el registro ndice se puede
incrementar automticamente. Existen 4 posibilidades: Pre-autoincremento. vec[++i]. I
I+1 ; (ref+I) Pre-autodecremento. vec[--i]. I
I-1 ; (ref+I) Post-autoincremento.vec[i++]. (ref+I) ; I I+1 Post-autodecremento.vec[i--]. (ref+I) ; I I-1
Su utilidad es la de recorrer secuencialmente unvector.
Estructura de Computadores Cap. 4: Repertorio de instrucciones. Direccionamiento y formatos. p.13/35
Algunas arquitecturas como el 68000 o el PowerPC permiten incrementar o decrementar au-
tomticamente el registro ndice. Existen cuatro posibilidades, aunque no todas las arquitecturasincluyen las cuatro:
Pre-autoincremento. Es equivalente a la sentencia de C vec[++i]: En primer lugar seincrementa el ndice para a continuacin calcular la direccin. Expresado en notacin detransferencia de registros, siendo I el registro ndice y ref la direccin de referencia,que coincidir con la direccin del primer elemento del vector vec: I I+1 ; (ref+I)
Pre-autodecremento. Equivalente a:vec[--i]. Se decrementa el ndice y despus secalcula la direccin. En notacin de transferencia de registros: I I-1 ; (ref+I)
Post-autoincremento. Equivalente a:vec[i++]. Se calcula la direccin y a continuacinse incrementa el registro ndice. En notacin de transferencia de registros: (ref+I) ; I I+1
Post-autodecremento. Equivalente a: vec[i--]. Se calcula la direccin y a continuacinse decrementa el registro ndice. En notacin de transferencia de registros: (ref+I) ; I
I-1
Estos modos de direccionamiento facilitan el recorrido secuencial de un vector, ya que au-tomticamente incrementan o decrementan el ndice de ste. Ahora bien, el incremento ha deadaptarse al tamao de los datos del vector. Por ello, las arquitecturas que soportan este modosuelen permitir incrementar el ndice en 1, 2 o 4 segn se est trabajando con vectores de 8, 16 o32 bits.
EjercicioEscriba una serie de instrucciones MIPS para realizar un direccionamiento indexado con post-
autoincremento en un vector de enteros de 32 bits. Como direccin base se usar s0 y como registrondice se usart0. Utilice estas instrucciones para poner a cero un vector de 100 elementos cuyadireccin inicial est almacenada ens0.
7/24/2019 Cap4ModDir[1].pdf
13/34
ICAIdea
Dir. directo relativo a pilaEs un caso particular del direccionamiento relativo aregistro:
Existe un registro dedicado (SP) que almacena eltope de la pila.
pushintroduce un dato en la pila.
popextrae un dato de la pila.Si la pila crece hacia abajo:
pushrealiza un direccionamiento relativo al SPcon pre-autodecremento
poprealiza un direccionamiento relativo al SP conpost-autoincremento.
Estructura de Computadores Cap. 4: Repertorio de instrucciones. Direccionamiento y formatos. p.14/35
Segn se vio en el tema anterior, la pila es una estructura fundamental en programacin. Sumodo de direccionamiento es un caso particular del direccionamiento relativo a registro. De hechoen el MIPS se utiliza este modo de direccionamiento para implementar una pila utilizando uno delos registros generalessppara almacenar el tope de la pila.
En muchas otras arquitecturas existen instrucciones especiales para introducir y extraer datosde la pila, tpicamente llamadas pushy poprespectivamente. Estas instrucciones realizan un di-reccionamiento relativo a registro, aunque de forma transparente al programador. Para empezar,no es necesario indicar el registro a usar, ya que hay un registro (el SP) reservado para almace-
nar el tope de la pila. Adems, a la hora de introducir un dato en la pila, el procesador realizaun direccionamiento relativo al SP con pre-autodecremento si la pila crece hacia abajo o con pre-autoincremento si la pila crece hacia arriba. De la misma manera, al extraer un dato de la pila, serealiza un direccionamiento relativo al registro SP con post-autoincremento si la pila crece haciaabajo o con post-autodecremento si la pila crece hacia arriba.
7/24/2019 Cap4ModDir[1].pdf
14/34
ICAIdea
Dir. directo relativo al PC
El registro base es el contador de programa.
Se utiliza para saltos cortos (bucles o if).
Se necesitan pocos bits para el salto.
Como el PC se incrementa al empezar a ejecutar lainstruccin, el desplazamiento se calcula respecto a lainstruccin siguiente a la del salto.
Ej.PC 64,Despl 16
salto aPC
1
16 64
1
16 91.
El cdigo producido esreubicable.
Estructura de Computadores Cap. 4: Repertorio de instrucciones. Direccionamiento y formatos. p.15/35
Cuando se realiza un salto, es necesario especificar la direccin de la instruccin a la que sedesea saltar. Se puede especificar la direccin completa, pero ello implica usar un gran nmerode bits. No obstante, la mayora de los saltos se originan en bucles y sentencias if, por lo que enla prctica la mayora de los saltos se realizan a posiciones cercanas a la instruccin actual. Porejemplo, en programas como el compilador gcco el simulador de circuitos spicela mitad de lossaltos son a posiciones que estn situadas a menos de 16 instrucciones de la actual. Adems lamayora de los saltos son a instrucciones dentro del rango 215 respecto a la instruccin actual.
Teniendo en cuenta lo dicho anteriormente, es muy conveniente disponer de un modo de di-
reccionamiento relativo usando el PC como direccin de referencia para ser usado en los saltos.Adems con un desplazamiento de 8 o 16 bits es ms que suficiente en la mayora de los casos.Hay que tener en cuenta que, por temas de implantacin, el PC se incrementa mientras se est
ejecutando la instruccin en curso, de forma que apunte lo antes posible a la instruccin siguiente.Por tanto, cuando se termina el ciclo de ejecucin de la instruccin y se decide dar el salto, el PC yaestar apuntando a la instruccin siguiente. En consecuencia, el desplazamiento almacenado en lainstruccin ha de calcularse relativo a la direccin de la instruccin siguiente al salto. Por ejemplosi la instruccin de salto est en la posicin 64 y dicha instruccin tiene un desplazamiento de 16,el salto se realizar a la posicin PC 1 16 64 1 16 91 (suponiendo que la instruccinocupa 1 byte).
Por ltimo conviene destacar que el cdigo producido con estos saltos es reubicable, pues no
depende de las direcciones absolutas de las instrucciones para dar los saltos, sino de sus posicionesrelativas.
7/24/2019 Cap4ModDir[1].pdf
15/34
ICAIdea
Dir. directo relativo al PC
El MIPS usa este direccionamiento en los saltos
condicionales.
6 bits 5 bits 16 bits5 bits
Tipo I op rt
0x70
Despl=2
0x78
PC
rs
x4
Estructura de Computadores Cap. 4: Repertorio de instrucciones. Direccionamiento y formatos. p.16/35
En el MIPS se usa el direccionamiento directo relativo al PC para los saltos condicionales.Como se ha comentado antes, el PC se incrementa durante la fase de decodificacin de la
instruccin, por lo que cuando se decide dar el salto, el PC ya apunta a la siguiente instruccin(PC+4). En el ejemplo de la figura, la direccin que provoca el salto estar almacenada en laposicin 0x6C.
Por otro lado, como las instrucciones del MIPS tienen un tamao fijo de 32 bits, los saltossern siempre mltiplos de 4. Para conseguir una mayor distancia de saltos, esta multiplicacinest implcita, por lo que el rango de los saltos pasa a ser de 215 instrucciones, es decir, 217
bytes.
7/24/2019 Cap4ModDir[1].pdf
16/34
ICAIdea
Dir. pseudodirecto del MIPS
Se emplea para saltos largos.
6 bits
0x78
PC
x4
Tipo J op
26 bits
4 bits
0
c
0x1E
Estructura de Computadores Cap. 4: Repertorio de instrucciones. Direccionamiento y formatos. p.17/35
Segn se mencion anteriormente, es conveniente disponer de un modo de direccionamientodirecto a memoria capaz de alcanzar todo el rango de direcciones para permitir que un programapueda saltar a cualquier posicin de memoria. En el MIPS son necesarios 32 bits para acceder atodo el mapa de memoria. Como las instrucciones en el MIPS tienen un tamao fijo de 32 bits, nose puede especificar una direccin completa de 32 bits dentro de la instruccin.
La solucin adoptada es la de utilizar un nuevo formato de instruccin, denominado tipo J(deJump), que contiene el cdigo de operacin de 6 bits, seguido de 26 bits para especificar unadireccin. Al igual que con el direccionamiento directo relativo al PC, se puede almacenar en
este campo de 26 bits la direccin de palabra en lugar de la direccin de byte, ya que todas lasinstrucciones tienen un tamao de 32 bits y estn alineadas en posiciones mltiplos de 4. Por tanto,los 26 bits se extienden as a 28 bits, con los dos bits menos significativos puestos a cero. Faltanpor especificar los 4 bits superiores. La solucin adoptada por los arquitectos del MIPS es la decopiar sin ms los 4 bits superiores del PC actual, de forma que los saltos se restringen a zonas de256 MB (64 Mega-instrucciones). Si el sistema operativo sita nuestro programa dentro de uno deesos bloques de 256 MB, no habr ningn problema.
Ejercicios
1. Es posible saltar fuera de una zona de 256 MB? Cmo?
2. En la instruccin de ensambladorbeq $s0, $s1, L1, la etiqueta L1pertenece a una in-struccin situada 200.000 bytes por encima de ella. Escriba una secuencia de instruccionesMIPS que permitan realizar dicho salto condicional.
7/24/2019 Cap4ModDir[1].pdf
17/34
ICAIdea
Ejemplo
Inmediato
op rs st rd sh fu
0x8000 B: sll $t1, $s2, 2 0 0 9 18 2 0
0x8004 add $t1, $t1, $s1 0 9 17 9 0 32
0x8008 lw $t0, 0($t1) 35 9 8 0
0x800C bne $t0, $s4, F 5 8 20 2
0x8010 add $s2, $s2, $s3 0 18 18 19 0 32
0x8014 j B 2 0x2000
0x8018 F: add $t0, $zero,$zero 0 0 0 8 0 32
Estructura de Computadores Cap. 4: Repertorio de instrucciones. Direccionamiento y formatos. p.18/35
En la transparencia se muestra el cdigo mquina generado por el cdigo en ensamblador delMIPS del bucle mostrado en la pgina 58 del tema 3b. Se ha supuesto que el cdigo se ha situadoa partir de la posicin de memoria 0x8000.
Como se puede apreciar, en la instruccin de salto condicional situada en la direccin 0x800C,el desplazamiento es de 2. Por tanto el salto se realizar dos instrucciones ms all de la siguienteinstruccin al salto, es decir:
0x800C + 4 + 2*4 = 0x8018Por otro lado, la instruccin de salto incondicional situada en la direccin 0x8014 realiza
un salto a la direccin 0x8000. Por tanto, en la instruccin se codifica como direccin de salto:0x8000/4 = 0x2000.
Ejercicio
Es el cdigo anterior reubicable? Por qu? En caso negativo, modifique el programa anteriorpara que sea reubicable, incluyendo la codificacin en cdigo mquina. Para esta ltima parte puedeusar el apndice A de (Patterson y Hennessy, 2000).
7/24/2019 Cap4ModDir[1].pdf
18/34
ICAIdea
Direccionamiento indirecto
Mediante uno de los modos de direccionamiento
anteriores se obtiene ladireccindel objeto.Los modos usados son los absolutos y los indirectos aregistro base e ndice.
Se necesita otro acceso a memoria para leer el objeto.
Aunque es til para manejo de punteros, muchas
arquitecturas (p. ej. MIPS) no lo incluyen.
Estructura de Computadores Cap. 4: Repertorio de instrucciones. Direccionamiento y formatos. p.19/35
En el direccionamiento indirecto, la direccin especificada en la instruccin no es la del objeto,sino la de la direccin del objeto. Es por tanto necesario un acceso a memoria adicional para leerel objeto una vez conocida su direccin.
Aunque en teora el direccionamiento indirecto se podra aplicar a todos los modos de direc-cionamiento directos, en la prctica se aplica a los absolutos y a los relativos a registro base y aregistro ndice.
Este modo de direccionamiento es til para el manejo de punteros. No obstante existen muchasarquitecturas, como por ejemplo el MIPS y en general todas las RISC, que no lo incluyen.
7/24/2019 Cap4ModDir[1].pdf
19/34
ICAIdea
Dir. indirecto absoluto de registro
La direccin del objeto est en el registro indicado en
la instruccin.
op rs=2 rt
31
0
1
2 0x74
0x740x27
Estructura de Computadores Cap. 4: Repertorio de instrucciones. Direccionamiento y formatos. p.20/35
En este modo de direccionamiento, en la instruccin se especifica un registro en el que estalmacenada la direccin del objeto.
El MIPS no dispone de este modo de direccionamiento, aunque se puede generar a partir deotro.
Ejercicio
Si el registros0contiene un puntero a un entero que se desea cargar en el registro t0, escriba
una instruccin MIPS para hacerlo.
7/24/2019 Cap4ModDir[1].pdf
20/34
ICAIdea
Dir. indirecto absoluto de memoria
En la instruccin se especifica la direccin del puntero
al objeto.La direccin puede ser completa o a pgina base.
0x740x27
0x27
Dir=0x74
Direccin del objeto
Objeto
Estructura de Computadores Cap. 4: Repertorio de instrucciones. Direccionamiento y formatos. p.21/35
En este modo de direccionamiento, en la instruccin se especifica la direccin de memoriaen la que se encuentra un puntero al objeto al que se desea acceder. Dicha direccin de memoriapuede ser completa (ms bits en la instruccin, pero el puntero puede estar en cualquier parte delmapa de memoria) o a pgina base (menos bits en la instruccin pero el puntero ha de estar situadoen una zona restringida de la memoria). En ambos casos el objeto puede estar en cualquier partede la memoria, ya que el puntero contendr la direccin completa del objeto.
Aunque el MIPS no dispone de este modo de direccionamiento de forma explcita, a partir deuno de sus modos de direccionamiento se puede generar un direccionamiento indirecto absoluto
de pgina base.
Ejercicio
Se desea cargar en t0un entero cuya direccin est almacenada en la posicin de memoria0x1000. Escriba una secuencia de instrucciones MIPS para hacerlo. En qu zonas de memoriahan de residir los punteros para poder usar este modo de direccionamiento en el MIPS?
7/24/2019 Cap4ModDir[1].pdf
21/34
ICAIdea
Dir. indirecto relativo a reg. base
La direccin del puntero se obtiene como
base+desplazamiento.til para tablas de punteros.
6 bits 5 bits 16 bits5 bits
Tipo I op rs=2 rt
31
0
12 0x70
Despl=4
0x740x27
0x27
Estructura de Computadores Cap. 4: Repertorio de instrucciones. Direccionamiento y formatos. p.22/35
En este modo de direccionamiento se aplica un direccionamiento relativo a registro base paraobtener la direccin del objeto.
Este modo permite trabajar fcilmente con tablas de punteros, ya que variando el desplaza-miento se obtiene cada uno de los objetos a los que apunta cada uno de los elementos del vector depunteros.
En la figura se muestra grficamente un modo de direccionamiento indirecto relativo a registrobase. Se ha tomado como ejemplo el MIPS, aunque hay que destacar que el MIPS No dispone deeste modo de direccionamiento. En el MIPS hay que realizar el acceso al objeto explcitamente:
lw $t0, 4($v0)lw $t0, 0($t0)
Como se puede observar, en primer lugar se carga la direccin del objeto en el registro t0y acontinuacin se carga el objeto, tambin en el registro t0.
7/24/2019 Cap4ModDir[1].pdf
22/34
ICAIdea
Dir. indirecto relativo a reg. ndice
Existen dos posibilidades:
Post-indexado: La direccin de referencia de lainstruccin contiene un puntero al que se le sumael registro ndice: dir = ((ref))+(Ri).
Pre-indexado: La direccin del puntero al objetoest almacenada en la direccin de referencia +Ri: dir = ((ref)+(Ri)).
Nota: ref es el campo de la instruccin que contiene la direccin
de referencia.
Estructura de Computadores Cap. 4: Repertorio de instrucciones. Direccionamiento y formatos. p.23/35
Al igual que en el direccionamiento directo relativo a registro ndice, en la instruccin seespecifica una direccin de referencia y un registro ndice.
Segn el momento en el que se realiza la indexacin, existen dos modos de direccionamientoindirecto relativo a registro ndice (tambin llamado para abreviar indirecto e indexado):
Post-indexado: En este caso se accede a la direccin de referencia para obtener unadireccin a la que se le suma el contenido del registro ndice. El resultado de esta sumaser la direccin a la que hay que acceder para obtener el objeto. En notacin detransferencia de registros, la direccin a la que se accede es: ((ref))+(Ri). La utilidad de
este modo de direccionamiento es la de poder acceder a cada uno de los elementos de unvector conociendo la direccin del puntero a su primer elemento. El inconveniente de usareste modo para esta aplicacin es su gran ineficiencia Sabra explicar por qu?
Pre-indexado: En este caso se suman en primer lugar la direccin de referencia y el con-tenido del registro ndice para obtener el puntero al objeto. A continuacin se usa la direc-cin obtenida para acceder al objeto. En notacin de transferencia de registros, la direccina la que se accede es: ((ref)+(Ri)). Este modo de direccionamiento es til para acceder acada uno de los elementos a los que apunta una tabla de punteros.
7/24/2019 Cap4ModDir[1].pdf
23/34
ICAIdea
Dir. indirecto relativo a reg. base indexa
Es una combinacin del direccionamiento indirecto
relativo a reg. base y el indirecto post-indexado.La direccin del objeto se obtiene como:((Rb)+(despl))+(Ri)
Siendo: Rb: Registro base.
despl: Campo de la instruccin que contiene eldesplazamiento.
Ri: Registro ndice.
Estructura de Computadores Cap. 4: Repertorio de instrucciones. Direccionamiento y formatos. p.24/35
En la pgina12se expuso brevemente el direccionamiento directo a registro base con de-splazamiento e indexado como una combinacin del direccionamiento a registro base con el direc-cionamiento indexado. Este direccionamiento, disponible en el Pentium, calcula la direccin delobjeto como (Rb)+(despl)+(Ri), es decir, la direccin a la que se accede es la suma del contenidodel registro ndice ms el desplazamiento almacenado en el campo despl de la instruccin ms elcontenido del registro Ri.
En el direccionamiento indirecto relativo a registro base con desplazamiento e indexado, seaccede a la direccin (Rb)+(despl) para obtener un puntero al que se le suma el contenido del
registro Ri para obtener la direccin final del objeto. En notacin de transferencia de registros, ladireccin del objeto se obtiene como: ((Rb)+(despl))+(Ri).La utilidad de este modo de direccionamiento es la de poder acceder a los elementos de un
vector a partir de una tabla de punteros a una serie de vectores, lo cual no es muy comn en laprctica. Al igual que el direccionamiento indirecto con post-indexado, este modo de acceder a loselementos de un vector no es muy eficiente Por qu?
7/24/2019 Cap4ModDir[1].pdf
24/34
ICAIdea
Ej. CISC: Formatos de instruccin
CO LI MD RT1 RT2
CO LI MD CD
CD
F1
F2
CO Cdigo de operacin.
LI Longitud de instruccin.
MD Modo de direccionamiento.CD Campo de datos.
RTx Identificacin de registro.
Estructura de Computadores Cap. 4: Repertorio de instrucciones. Direccionamiento y formatos. p.25/35
En las siguientes transparencias se va a estudiar un ejemplo de aplicacin de los modos dedireccionamiento vistos hasta ahora a una mquina CISC ficticia.
Dicha mquina CISC tiene un bus de datos de 16 bits y un bus de direcciones de 16 bits.Las instrucciones se codifican segn los dos formatos mostrados en la figura: F1 y F2. Los dos
formatos comienzan con un primer byte en el que se codifica el cdigo de operacin, la longitudde la instruccin y el modo de direccionamiento empleado. En el segundo byte se encuentra undato inmediato en el formato F1 o dos identificadores de registro en el formato F2. En el formatoF2 se incluye una segunda palabra de 16 bits con un campo de datos que puede contener un dato
inmediato o una direccin.En las siguientes transparencias se muestran los distintos modos de direccionamiento sopor-tados por esta mquina CISC. Se indica para cada modo el formato de instruccin utilizado (Fx),el contenido del campo de datos (CD), la direccin final a la que se accede (DF) y el nmero deaccesos de memoria empleados para ejecutar una instruccin que realice ACC (ACC)+(DF).ste nmero de accesos se divide en captacin (C) y ejecucin (E) de la instruccin.
7/24/2019 Cap4ModDir[1].pdf
25/34
ICAIdea
Ej. CISC: Modos de direccionamiento
Tipo Dir. Fx CD DF C+E Comentario
Inmediato F1 Dato 8b 1+0 Op. con cte. = 8 b
F2 Dato 16b 2+0 Op. con cte. = 16 b
Directo F1 Dir(dato) (CD) 1+1 Acceso pag. base
F2 Dir(dato) (CD) 2+1 Acceso toda mem.
Indirecto F1 Dir(Dir(dato)) ((CD)) 1+2 Punteros en mem.
Directo Reg. F1 Id. Reg. RT 1+0 Op. con reg.
Indir. Reg. F1 Id. Reg. (RT) 1+1 Punt. en reg.
Estructura de Computadores Cap. 4: Repertorio de instrucciones. Direccionamiento y formatos. p.26/35
En esta transparencia y en la siguiente se muestran los modos de direccionamiento soportadospor esta arquitectura CISC ficticia.
Existen dos modos de direccionamiento inmediato, en funcin de la longitud necesaria para laconstante. Si sta es pequea, se podr codificar dentro del campo de datos (CD) de la instruccincon formato F1. Con ello se consigue una operacin rpida, ya que slo es necesario un ciclode acceso para leer la instruccin. Si la constante necesita 16 bits para codificarse, entonces esnecesario usar el formato de instruccin F2, necesitndose entonces 2 ciclos de acceso a memoriapara captar la instruccin.
Para direccionamiento directo absoluto de memoria, este computador dispone de direccionamien-to a pgina base usando el formato F1, con lo que se necesita 1 acceso para captar la instruccin y
otro para captar el operando desde la memoria. Si se necesita acceder a toda la memoria es nece-sario usar el formato F2 para disponer de un campo de datos de 16 bits. El inconveniente es unciclo adicional para captar la segunda palabra de la instruccin.
El modo de direccionamiento indirecto absoluto slo est soportado en pgina base utilizandoel formato F1. Ntese que ahora es necesario un ciclo de captacin para la instruccin y dos accesosadicionales para leer el dato: un primer acceso para leer el puntero al dato y un segundo accesopara leer el dato.
Por ltimo, existen dos modos de direccionamiento con registro: directo, en el cual se usa eldato contenido en el registro y por tanto slo es necesario un ciclo de captacin; e indirecto, en elcual el registro contiene la direccin del dato, lo que implica un acceso a memoria adicional paraleer el dato.
EjercicioDnde han de residir los punteros para poder utilizar el direccionamiento indirecto? Cuntosaccesos a memoria seran necesarios en un modo de direccionamiento indirecto si queremos que elpuntero utilizado pueda estar en cualquier parte de la memoria?
7/24/2019 Cap4ModDir[1].pdf
26/34
ICAIdea
Ej. CISC: Modos de direccionamiento
Tipo Dir. Fx CD DF C+E Comentario
Relativo CP F1 Despl. (CP)+(CD) 1+1 Saltos cercanos
Relativo Ind. F1 Ref. (CD)+(Rin) 1+1 Vectores
F2 Ref. (CD)+(Rin) 2+1
Relativo base F1 Despl. (Rb)+(CD) 1+1 Estructuras datos
F2 Despl. (Rb)+(CD) 2+1
Estructura de Computadores Cap. 4: Repertorio de instrucciones. Direccionamiento y formatos. p.27/35
El modo de direccionamiento relativo al contador de programa usa el formato F1, con lo queslo se permiten saltos cortos (del tamao del CD). El nmero de accesos es uno de captacin msotro para captar el objeto, que en este modo de direccionamiento ser una instruccin. 1
El modo de direccionamiento relativo a registro ndice dispone de dos formatos: F1 cuandola direccin de referencia est en pgina base y F2 cuando dicha direccin de referencia est encualquier parte de la memoria. En el primer caso se necesita un ciclo para captar la instrucciny otro para acceder al dato, mientras que en el segundo se necesitan dos ciclos para captar lainstruccin.
El modo de direccionamiento relativo a registro base dispone tambin de dos formatos posi-bles, en funcin de la longitud necesaria para el desplazamiento.
1
Aunque este modo de direccionamiento se utiliza siempre para saltos, nada impide en teorausarlo para acceder a los datos del programa. No obstante, en la mayora de las aplicaciones losdatos y los programas se sitan en segmentos de memoria separados para una mayor facilidadde programacin. Por ejemplo en el MIPS los programas de usuario se sitan desde 0x400000 a0x0FFFFFF y los datos desde 0x1000000 a 0x7FFFFFFF.
7/24/2019 Cap4ModDir[1].pdf
27/34
ICAIdea
Ej. CISC: Modos de direccionamiento
Tipo Dir. Fx CD DF C+E Comentario
Ind. postindex F1 Dir(vec) ((CD))+(Rin) 1+2 Punt a vector
Ind. preindex F1 Dir(vec) ((CD)+(Rin)) 1+2 Vec de punt.
Ind. Reg. Base F1 Despl. ((Rb)+(CD)) 1+2 Vec de punt.
Ind. Base+Indx F2 Dir. ((Rb)+(CD))+(Rin) 2+2 Vec de vec
de punt.
Estructura de Computadores Cap. 4: Repertorio de instrucciones. Direccionamiento y formatos. p.28/35
El modo de direccionamiento indirecto relativo a registro ndice con post-indexado utiliza elformato F1, lo cual implica que la direccin de referencia ha de estar en pgina base. El contenidode dicha direccin ser normalmente la direccin del primer elemento de un vector, por lo quepara acceder a cada uno de los elementos basta con situar su ndice en el registro ndice. Nteseque son necesarios ahora un ciclo de captacin y dos de ejecucin: un primer acceso para leer ladireccin base del vector y poder as calcular la direccin del dato sumando a dicha direccin baseel contenido del registro ndice. Una vez calculada la direccin del dato se realiza otro acceso paraacceder a l.
El modo de direccionamiento indirecto relativo a registro ndice con pre-indexado se utilizapara acceder a objetos a travs de una tabla de punteros. Al igual que el post-indexado, se utilizael formato F1, con lo que la tabla de punteros ha de estar en pgina base. Para acceder al objeto
se realiza un acceso para leer la direccin base a la que se le suma el registro ndice para obtenerla direccin del objeto. Son necesarios por tanto tres accesos: uno para la instruccin, otro para labase del vector de punteros y un tercero para el objeto.
El modo de direccionamiento indirecto relativo a registro base es similar al indirecto relativo aregistro ndice con pre-indexado. La nica diferencia es que el registro base contendr la direccinde una tabla de punteros y para acceder a cada uno de los elementos de dicha tabla se usan distintosdesplazamientos dentro del CD de la instruccin.
Por ltimo el direccionamiento indirecto relativo a registro base e indexado se puede utilizarpara acceder a los elementos de un vector a partir de una tabla de punteros a una serie de vectores.Mediante un direccionamiento indirecto a registro base se obtiene la direccin del primer elementodel vector. A dicha direccin se le suma el contenido de un registro ndice para acceder al elemento
deseado dentro del vector.Como se dijo antes, la utilidad de estos cuatro ltimos modos de direccionamiento en la prc-tica no es mucha, por lo que las arquitecturas RISC optan por no incluirlas en su repertorio demodos de direccionamiento. Esto evita complicar innecesariamente la CPU con modos de direc-cionamiento que se utilizan rara vez.
7/24/2019 Cap4ModDir[1].pdf
28/34
ICAIdea
Regularidad y ortogonalidad
Regularidad: Inexistencia de casos particulares.
Es ms fcil de programar en ensamblador. El diseo del compilador es mas sencillo.
Ortogonalidad: Se puede usar cualquier modo dedireccionamiento para cada uno de los operandos y elresultado.
Estructura de Computadores Cap. 4: Repertorio de instrucciones. Direccionamiento y formatos. p.29/35
Un buen juego de instrucciones ha de ser regular y ortogonal.Por regular se entiende que no presente casos particulares, lo cual facilita la programacin en
ensamblador y el diseo de compiladores. Por ejemplo el MIPS puede usar cualquiera de sus 32registros en todas sus operaciones. Adems la mayora de las instrucciones son de tres direcciones:un resultado y dos operandos. Sin embargo en este aspecto presenta una irregularidad con lasinstrucciones de multiplicacin multy divisin div, ya que como recordar, estas aceptan slodos operandos y dejan el resultado en los registros hiy lo. No obstante el ensamblador admitela pseudoinstruccin (mul) que despus de multiplicar transfiere el contenido del registro loa un
registro destino. As para multiplicar s0
por s1
y depositar el resultado en t0
basta con hacermul $t0, $s0, $s1. El Pentium en cambio tiene ciertos registros que slo pueden usarse condeterminadas instrucciones.
En cuanto a la ortogonalidad, el MIPS no es nada ortogonal, pues en las operaciones slo ad-mite direccionamiento directo de registro o un operando inmediato. El Pentium en cambio admiteoperaciones registro-registro, registro-memoria y memoria-registro, lo cual lo hace ms ortogonal(faltan las operaciones memoria-memoria). El colmo de la ortogonalidad lo tenemos en el VAX,hoy obsoleto, en el cual tanto el resultado como los operandos podan estar en registros o en memo-ria, pudindose utilizar cualquiera de los modos de direccionamiento disponibles.
7/24/2019 Cap4ModDir[1].pdf
29/34
ICAIdea
Ej. CISC: Pentium
En las siguientes transparencias se muestra la
arquitectura a nivel de ensamblador del Pentium.
Slo se discute el modelo de 32 bits, pues el de 16 bits
est claramente en desuso (MS-DOS) y es bastante
peor.
Estructura de Computadores Cap. 4: Repertorio de instrucciones. Direccionamiento y formatos. p.30/35
7/24/2019 Cap4ModDir[1].pdf
30/34
ICAIdea
Ej. CISC: Pentium. Registros031
GPR 0EAX
GPR 3EBX
GPR 1ECX
GPR 2EDX
GPR 6 (Source Index)ESI
Code segment pointerCS
Stack segment pointer (top of stacSS
Data segment pointer 0DS
Data segment pointer 1ES
Data segment pointer 2FS
Data segment pointer 3GS
GPR 7 (Destination Index)EDI
GPR 5 (Frame Pointer)EBP
GPR 4 (Stack Pointer)ESP
EIP Instruction pointer (PC)
EFLAGS Condition codes
Name Use
Estructura de Computadores Cap. 4: Repertorio de instrucciones. Direccionamiento y formatos. p.31/35
En la figura se muestran los registros disponibles en el Pentium para operaciones con enteros.Los 8 primeros EAX, EBX, ECX, EDX, ESP, EBP, ESI, EDI son considerados de propsitogeneral, aunque algunos de ellos tienen adems otras tareas especficas. Por ejemplo el ESPesel puntero de pila y el EBPpuede ser usado como puntero al bloque de activacin. Los registrosESIy EDIse usan en las instrucciones de transferencia de cadenas de caracteres para apuntarrespectivamente al origen y destino de los caracteres transferidos.
Los 6 registros de 16 bits CS, SS, DS, ES, FS, GSson los punteros de segmentos en elmodo real o los descriptores de segmento en modo protegido. Aunque en modo real (MS-DOS) el
programador tena que acceder a estos registros para el manejo de la memoria, en modo protegidoson slo usados por el sistema operativo. En cualquier caso, no estn disponibles para usarlos enlas aplicaciones.
Por ltimo el registro EIPes el contador de programa y el registro EFLAGScontiene los bitsde estado (banderas) del procesador. Estos bits se activan automticamente al ejecutarse ciertasinstrucciones. Por ejemplo existe un bit denominado Z que se activa cada vez que el resultado deuna operacin es cero.
Como puede observar, el banco de registros del Pentium, si se compara con el del MIPS,es bastante ms limitado. Existen slo 8 registros de propsito general en lugar de los 31 delMIPS, pero adems 4 de ellos tienen funciones muy especficas, lo que hace que sea an msdifcil mantener un gran nmero de variables dentro de estos registros durante la ejecucin de
los programas. Lamentablemente, la necesidad de mantener la compatibilidad con el 8086 haceimposible introducir nuevos registros para mejorar las prestaciones. Lo nico que se ha podidohacer ha sido aumentar su tamao de 16 a 32 bits, pero nada ms.
7/24/2019 Cap4ModDir[1].pdf
31/34
ICAIdea
Ej. CISC: Pentium. Operandos
El Pentium es una mquina de dos direcciones. las
combinaciones permitidas son las siguientes:
Fuente1/Destino fuente2
Registro Registro
Registro Inmediato
Registro Memoria
Memoria RegistroMemoria Inmediato
Estructura de Computadores Cap. 4: Repertorio de instrucciones. Direccionamiento y formatos. p.32/35
Las instrucciones aritmticas y lgicas del Pentium admiten dos argumentos, de los cuales elprimero hace las veces de fuente y de destino, es decir, el resultado de la operacin se sobreescribeen el primer argumento. Esto hace an ms difcil mantener las variables de los programas en losregistros internos de la CPU, ya que uno de los argumentos se destruye en la operacin, por lo quesi lo volvemos a necesitar despus hay que volver a cargarlo de memoria (o guardarlo en la pila yrecuperarlo despus si es un resultado intermedio que no est an almacenado en la memoria).
Una clara ventaja del Pentium con respecto al MIPS (y en general con respecto a todos losRISC) es la de poder especificar como uno de los operandos una palabra situada en memoria,
usando cualquiera de los modos de direccionamiento descritos a continuacin. Esta caractersticafacilita la programacin, pero dificulta la implementacin del procesador.
7/24/2019 Cap4ModDir[1].pdf
32/34
ICAIdea
Ej. CISC: Pentium. Modos de direcciona
Los modos de direccionamiento del Pentium son
irregulares: No todos los modos pueden usarse con todas las
instrucciones. No todos los registros pueden usarse en todos los
modos
Esto hace difcil la escritura de programas en ensam-blador y de los compiladores.
Estructura de Computadores Cap. 4: Repertorio de instrucciones. Direccionamiento y formatos. p.33/35
Un ejemplo de instruccin que no soporta todos los modos de direccionamiento es la instruc-cin outque sirve para enviar un dato a un puerto de entrada/salida. Dicha instruccin necesitaque la direccin del puerto est en el registroDX.
Tampoco algunos registros pueden usarse con otros modos de direccionamiento a memoria.Por ejemplo, para copiar un dato al registro ESno puede hacerse mediante un direccionamientoinmediato con la instruccin:
mov es, 023h ; Ilegal
pues este tipo de instruccin slo soporta el modo registro, registro. Por tanto para almacenarun valor en el registroesprimero hay que colocar dicho valor en un registro de propsito general(por ejemploax) y luego copiar dicho registro al es, tal como se muestra a continuacin:
mov ax, 023h
mov es, ax
Obviamente estas excepciones dificultan la labor de los programadores que han de recordarun gran nmero de excepciones y casos particulares.
7/24/2019 Cap4ModDir[1].pdf
33/34
ICAIdea
Ej. CISC: Pentium. Modos de direcciona
Los modos de direccionamiento soportados son:
Inmediato (8, 16 o 32 bits) Directo absoluto de registro Directo absoluto de memoria (dir 32 bits) Indirecto absoluto de registro (ni ESP ni EBP) Directo relativo a registro base (no ESP) Directo relativo a reg. base escalado e indexado Directo relativo a pila Directo relativo al CP (IP)
Estructura de Computadores Cap. 4: Repertorio de instrucciones. Direccionamiento y formatos. p.34/35
Siguiendo la filosofa de los procesadores RISC, el Pentium soporta un gran nmero de modosde direccionamiento.
En primer lugar los valores inmediatos pueden ser de hasta 32 bits, lo cual contrasta con elMIPS, en el cual slo pueden ser de 16 bits.
En segundo lugar se puede especificar la direccin absoluta de memoria de 32 bits dentro deuna instruccin, lo cual permite usar fcilmente cualquier posicin de la memoria.
Al igual que el MIPS es posible acceder a una posicin de memoria cuya direccin est al-macenada en un registro de propsito general. No obstante dicho registro no puede ser ni ESP niEBP.
Tambin dispone de un modo de direccionamiento relativo a registro base, pudendose usar
desplazamientos de 8 bits o de 32 bits, lo que permite nuevamente acceder a toda la memoria.El modo relativo a registro base escalado en indexado (SIB en la terminologa Intel) es bastantepotente, permitiendo acceder a cualquier elemento de un vector en una sola operacin. En estemodo se especifica un registro base, al que se le suma un ndice multiplicado por un factor deescala que puede ser 1, 2, 4 u 8 para permitir usar vectores con elementos de 1, 2, 4 u 8 bytes.Al resultado se le puede sumar un desplazamiento adicional de 8 o 32 bits. Por ejemplo, si elcomienzo del bloque de activacin est almacenado en el registro ebpy de desea almacenar un 4en el elemento 3 de un vector de enteros que comienza en la posicin 7 del bloque de activacin,se puede hacer:
mov eax, 3
mov [dword ebp+4*eax+7], dword 4
El direccionamiento a pila est soportado mediante las instrucciones pushypop.Por ltimo, el direccionamiento relativo al CP admite desplazamientos de 8 o de 32 bits.
7/24/2019 Cap4ModDir[1].pdf
34/34
ICAIdea
Formatos de instruccin. Pentium
PREFIX
SCALE INDEX BASE
MOD REC R/M
OPCODE MODE SIB DISPLACEMENT IMMEDIATE
0 4
32Bits
332Bits
Bytes 1 3 0 1 0 1 0 4 0 4
Estructura de Computadores Cap. 4: Repertorio de instrucciones. Direccionamiento y formatos. p.35/35
En la figura, que ya se ha mostrado en el captulo 3, se ilustra el formato de las instruccionesdel Pentium.En el se puede apreciar cmo se codifican los modos de direccionamiento, el cual se realiza
entre el cdigo de operacin y los dos bytes siguientes, denominados MODEy SIB. El primero deellos indica el modo de direccionamiento del operando que est en memoria. Mediante los 3 bitsR/Mse indica el registro usado en el direccionamiento y con los 2 bits MOD se especifica el modode acceso: Directo absoluto de registro (11), indirecto absoluto de registro (00), directo relativo aregistro base con desplazamiento de 8 bits (01) o de 32 bits (10). Las combinaciones no usadasdebido a que los registros ebpy espno pueden usarse en algunos modos se usan para especificarel direccionamiento directo y el direccionamiento SIB. En este ltimo caso se necesita incluir elbyte SIB para especificar los dos registros base e ndice as como la escala por la que se multiplica
al ndice.Los dos ltimos posibles campos sirven para almacenar el desplazamiento (DISPLACEMENT)de 1, 2 o 4 bytes 1 y un dato inmediato, tambin de 1, 2 o 4 bytes.
Una exposicin ms detallada puede encontrarse en (Intel, 2003).
Referencias
de Miguel Anasagasti, P. (2000).Fundamentos de los computadores. Paraninfo-Thomson learning.
Intel (2003). IA-32 Intel R
Architecture Software Developers Manual. Volume 2: Instruction Set
Reference. Intel corporation. Disponibleon-lineen:http://developer.intel.com/design/pentium4/manuals/245471.htm .
Patterson, D. A. y Hennessy, J. L. (2000). Estructura y diseo de computadores. Interficie cir-i / i R