Cap4ModDir[1].pdf

download Cap4ModDir[1].pdf

of 34

Transcript of Cap4ModDir[1].pdf

  • 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