You are on page 1of 18

Introduccin

Las instrucciones mquina son las acciones elementales que puede ejecutar un computador. Una accin compleja deber codificarse como una secuencia de instrucciones mquina en lo que se denomina un programa. Estos programas son desarrollado por programadores que por lo general emplean lenguajes ensambladores que luego son transformados por un proceso a lenguaje maquina con el fin de que desempeen una tare en especfico dentro del computador. En general una instruccin codifica una operacin bsica que el computador realiza sobre uno datos ubicados en memoria o en los registro de la mquina y a los que accede utilizando un modo de direccionamiento.

Modos de Direccionamiento y Formato

Modos de Direccionamiento:

Un modo de direccionamiento especifica la forma de calcular la direccin de memoria efectiva de un operando mediante el uso de la informacin contenida en registros y / o constantes, contenida dentro de una instruccin de la mquina o en otra parte.

Direccionamiento inmediato:
Es el modo de direccionamiento en el que el operando esta en realidad presente en la propia instruccin. La ventaja del direccionamiento inmediato es que una vez captada la instruccin no se requiere una referencia a memoria para obtener el operando ahorrndose pues un ciclo de memoria o de cache en el ciclo de instruccin. La desventaja es que el tamao del numero est restringido a la longitud del campo de direcciones que, en la mayora de los repertorios de instrucciones, es pequeo comparado con la longitud de la palabra. Operando = A

Direccionamiento Directo:
Es el direccionamiento en el que el campo de direcciones contiene la direccin efectiva del operando. Solo requiere de una referencia a memoria, y su limitacin es que proporciona un espacio de direcciones restringido. EA= A

Direccionamiento indirecto:
El problema con el direccionamiento directo, es que la longitud del campo de direcciones es normalmente menor que la longitud de la palabra, limitando de esta manera el rango de direcciones. Es entonces cuando interviene el direccionamiento indirecto, cuyo proceso consiste en hacer que el campo de direcciones referencie la direccin de una palabra de memoria que contenga la direccin completa del operando. La desventaja de este direccionamiento es que es que la ejecucin de la instruccin requiere dos referencias a memoria para captar el operando: una para captar su direccin y otra para captar su valor.

EA= (A)

------------> El parntesis se interpreta como <<contenido de>>

Direccionamiento de Registros:
El direccionamiento de registros es similar al directo. La nica diferencia es que el campo de direcciones referencia un registro en lugar de una direccin de memoria principal. EA= R Las ventajas del direccionamiento de registro son: 1) Solo es necesario un campo pequeo de direcciones en la instruccin. 2) No se requieren referencias a memoria. El tiempo de acceso a un registro de la CPU es mucho menor que para la memoria principal. La desventaja es que el espacio de direcciones est muy limitado.

Direccionamiento indirecto con registro:

El campo de operando de la instruccin contiene un identificador de registro en el que se encuentra la direccin efectiva del operando. El campo de direcciones referencia una posicin de una palabra completa (un registro completo en este caso) que contenga la direccin efectiva del operando. Adems el direccionamiento indirecto con registro emplea una referencia menos a menora que el direccionamiento indirecto. EA= (R)

Direccionamiento con desplazamiento:


Combina las posibilidades del direccionamiento directo y el direccionamiento indirecto con registro. El registro con desplazamiento requiere que las instrucciones tengan dos campos de direcciones, el valor= A, se utiliza directamente. El otro campo de direcciones se refiere a un registro cuyo contenido se suma a A para generar la direccin efectiva. EA= A + (R). Tres de los direccionamientos con desplazamientos ms comunes son: Direccionamiento relativo: El registro referenciado implcitamente es el contador de programa. El campo de direcciones se trata como un nmero en complemento a 2, y representa un desplazamiento relativo al PC.

Direccionamiento con registro base: En este direccionamiento el registro referenciado contiene una direccin de memoria y el campo de direccin contiene un desplazamiento desde dicha direccin Direccionamiento indexado: El campo de direcciones referencia una direccin de memoria principal, y el registro referenciado contiene un desplazamiento positivo desde esa direccin. En el indexado se considera que el campo de direcciones es una direccin de memoria, generalmente contiene ms bits que un campo de direcciones de una instruccin comparable que emplee direccionamiento con registro base.

Direccionamiento de pila:
Se utiliza cuando el operando est en memoria y en la cabecera de la pila. Este direccionamiento se basa en las estructuras denominadas Pila (tipo LIFO), las cuales estn marcados por el fondo de la pila y el puntero de pila (*SP), El puntero de pila apunta a la ltima posicin ocupada. As, como puntero de direccionamiento usaremos el SP. El desplazamiento ms el valor del SP nos dar la direccin del objeto al que queramos hacer referencia. En ocasiones, si no existe C. de desplazamiento solo se trabajara con la cima de la pila. Este tipo de direccionamiento nos aporta flexibilidad pero por el contrario, es mucho ms complejo que otros tipos estudiados ms arriba.

Modos de direccionamiento del Pentium


El mecanismo de traduccin de direcciones del Pentium produce una direccin, denominada direccin virtual o efectiva, que es un desplazamiento dentro de un segmento. La suma de la direccin de comienzo del segmento y la direccin efectiva produce una direccin lineal. Si se est empleando paginacin, esta direccin lineal debe pasar por un mecanismo de traduccin de pginas para producir una direccin fsica. El Pentium est equipado con diversos modos de direccionamientos, ideados para permitir la ejecucin eficiente de lenguajes de alto nivel. La figura indica el hardware involucrado. El segmento objeto de la referencia se determina mediante el registro de segmento. Hay seis registros de segmento; cul de ellos es usado para una referencia concreta depende del contexto de ejecucin y de la instruccin. Cada registro de segmento retiene la direccin de comienzo del correspondiente segmento. Asociado con cada registro de segmento visible para el usuario, hay un registro descriptor de segmento (no visible al programador), que registra los derechos de acceso para el segmento, as como la direccin

de comienzo y el limite (longitud) del segmento. Adems, hay dos registros que pueden emplearse para construir una direccin: el registro base y el registro ndice.

Modo inmediato: el operando se incluye en la instruccin. El operando puede ser un byte, una palabra o una palabra doble de datos. Modo de operando en registro: el operando est situado en un registro. Para instrucciones de tipo general, tales como transferencias de datos, aritmticas, y lgicas, el operando puede ser uno de los registros generales de 32 bits (EAX, EBX, ECX, EDX, ESI, EDI, ESP, EBP), uno de los registros generales de 16 bits (AX, BX, CX, DX, SI, DI, SP, BP), o uno de los registros generales de ocho bits (AH, BH, CH, DH, AL, BL, CL, DL). Para operaciones en coma flotante, los operandos de 64 bits se forman utilizando dos registros de 32 bits como una pareja. Hay tambin algunas instrucciones que hacen referencia a los registros de segmento (CS, DS, ES, SS, FS, GS). Modo desplazamiento: el desplazamiento del operando (la direccin efectiva en la figura) est incluido, formando parte de la instruccin, como desplazamiento de 8, 16, o 32 bits. Con segmentacin, todas las direcciones dadas en instrucciones hacen referencia a desplazamiento dentro de segmentos.

El modo de direccionamiento con desplazamiento se puede encontrar en pocas maquinas ya que, implica instrucciones largas. En el caso del Pentium, el valor de desplazamiento puede ser tan largo como 32 bits, haciendo que la instruccin tenga seis bytes. El direccionamiento con desplazamiento puede ser til para referenciar variables globales. Modo base con desplazamiento: la instruccin incluye un desplazamiento que hay que sumar a un registro base, que puede ser cualquiera de los registros de uso general. Ejemplo de uso de este modo es: Utilizacin para acceder a un campo de registro. El registro base apunta al comienzo del registro, mientras que el desplazamiento indica la posicin del campo.

Modo desplazamiento con ndice <<escalado>>: la instruccin incluye un desplazamiento a sumar a un registro, llamado en este caso registro ndice. El registro ndice puede ser cualquiera de los registros de uso general excepto el ESP, que normalmente se emplea para procesamiento con la pila. Para calcular la direccin efectiva, el contenido del registro ndice se multiplica por un factor de escala 1, 2, 4 u 8, y se suma despus de un desplazamiento. Este modo mtodo es muy conveniente para indexar matrices. Un factor de escala dos puede usarse para una matriz de enteros de 16 bits. Un factor de escala cuatro para enteros de 32 bits o para nmeros en coma flotante. Finalmente, un factor de ocho puede emplearse para una matriz de nmeros en coma flotante de doble precisin. Modo base con ndice y desplazamiento: suma los contenidos de los registros base e ndice, y un desplazamiento, para formar la direccin efectiva. De nuevo, el registro base puede ser cualquier registro de uso general, y el registro ndice puede ser cualquier registro de uso general excepto el ESP. Como ejemplo, este modo de direccionamiento podra emplearse para acceder a una matriz local en un marco de pila. Modo base con ndice escalado y desplazamiento: suma el contenido de registro ndice multiplicado por un factor de escala, con el contenido del registro base, y el desplazamiento. Esto es til cuando una matriz esta almacenada en una marco de pila; en este caso, los elementos de la matriz serian de 2, 4, u 8 bytes de longitud. Este modo permite tambin la indexacin eficiente de una matriz bidimensional cuando los elementos de la misma tiene longitudes de 2, 4, u 8 bytes. Direccionamiento relativo: puede emplearse en instrucciones de transferencia del control (control de flujo). Se suma un desplazamiento al valor del contador de programa, que apunta a la instruccin siguiente. En este caso, el desplazamiento se trata como un byte, una palabra o una palabra doble numrica con signo, cuyo valor bien incrementa o decrementa la direccin contenida en el contador de programa.

Tabla de modos de direccionamiento del pentium

Modos de direccionamiento del powerpc


Como la mayora de las maquinas RISC, y en contrastes con el Pentium y la mayora de los CISC, el powerpc emplea un conjunto de modos de direccionamiento sencillo y relativamente evidente. Direccionamiento de carga/memorizacin: el powerpc proporciona dos modos de direccionamiento alternativos para instrucciones de carga/memorizacin. En el direccionamiento indirecto, la instruccin incluye un desplazamiento de 16 bits que se suma a un registro base, que puede ser alguno de los registros de uso general. Adems, la instruccin puede especificar que la nueva direccin efectiva calculada se devuelva al registro base, actualizando su contenido actual. La opcin de actualizacin es til para el indexado progresivo de matrices en bucles. La otra tcnica de direccionamiento para las instrucciones de carga/memorizacin es el direccionamiento indexado indirecto: en este caso, la instruccin referencia un registro base y otro ndice, pudiendo ambos ser cualquiera de los registros de uso general. La direccin efectiva es la suma de los contenidos de estos dos registros. De nuevo, la opcin de actualizacin hace que el registro base se actualice con la nueva direccin efectiva.

Direccionamiento de bifurcaciones. Se dispone de tres modos de direccionamiento para bifurcaciones. Si se emplea direccionamiento absoluto con instrucciones de salto incondicional, la direccin efectiva de la siguiente instruccin se obtiene a partir de un valor inmediato de 24 bits contenido en la instruccin. El valor de 24 bits se extiende hasta 32 bits aadiendo dos ceros a su extremo menos significativo (esto es posible ya que las instrucciones estn cada 32 bits) y extendiendo (repitiendo) el signo. Para las instrucciones de salto condicional, la direccin efectiva de la siguiente instruccin se deduce de un valor de inmediato de 16 bits incluido en la instruccin. Este valor se extiende a un valor de 32 bits aadiendo dos ceros a su extremo menos significativo y extendiendo el signo. Con direccionamiento relativo, el valor inmediato de 24 bits (instrucciones de salto incondicional) o de 14 bits (instrucciones de salto condicional) se extiende como en los casos anteriores. El valor resultante se suma entonces al contador de programa a fin de determinar una posicin relativa a la instruccin actual. El otro modo de direccionamiento de bifurcaciones condicionales es el direccionamiento indirecto. Este modo obtiene la direccin efectiva de la siguiente instruccin bien del registro de enlace o bien del registro de cuenta. En este caso, el registro de cuenta se usa para retener la direccin de la instruccin de bifurcacin. Este registro puede tambin emplearse para mantener un contador para bucles.

Formato de instrucciones
El formato de instrucciones es un conjunto de especificaciones que indican como debe ser interpretado el patrn de bits de una instruccin de mquina para logra su ejecucin dentro del computador. El formato de la instruccin nos indica cual es el cdigo de operacin y cuales los operandos que la instruccin especfica, tanto explcita como implcitamente.

Longitud de la Instruccin:
En algunas mquinas todas las instrucciones tienen la misma longitud; en otras hay instrucciones con distintas longitudes. La longitud de las instrucciones puede ser menor, igual o mayor que el tamao de la palabra. Exigir que todas las instrucciones posean la misma longitud hace ms sencillo su decodificacin pero puede desperdiciarse espacio. En el momento que se disea una nueva computadora se deben escoger los formatos de las instrucciones y para ello se deben tomar en cuenta varios factores. Por un lado, si la nueva computadora llega a tener un xito comercial, el conjunto de instrucciones podra sobrevivir 20 aos o ms. En este caso, la capacidad para aadir nuevas instrucciones y aprovechar otras oportunidades que surjan durante el tiempo de vida del diseo de ese computador tiene gran importancia. Adems, la eficiencia de un conjunto de instrucciones depende en gran medida de la tecnologa con la que se va a implementar. Con el pasar del tiempo, esta tecnologa puede cambiar enormemente y hacer que ciertas decisiones que se tomaron al momento del diseo, no parezcan luego que fueron las mejores. Un criterio de diseo importante es el relativo al tamao de las instrucciones. Un programa conformado por n instrucciones de 16 bits ocupa menos espacio de memoria que n instrucciones de 32 bits. Si se minimiza mucho el tamao de las instrucciones puede hacer que el proceso de decodificacin y sobreposicin de instrucciones sea ms complicado. Un motivo para disminuir el tamao de las instrucciones es el ancho de banda de la memoria, es decir, el nmero de bits que la memoria puede suplir por segundo. La velocidad de los procesadores ha aumentado ms rapidamente que la velocidad de las memorias, por lo tanto las memorias se transforman en cuellos de botellas en el sistema. El hecho de que las instrucciones sean ms cortas implica un procesador ms rpido. Dado que los computadores modernos pueden ejecutar varias instrucciones en un ciclo de reloj, es imperativo traer varias instrucciones en cada ciclo de reloj, por lo tanto, el tamao de la instruccin es importante.

Asignacin de los bits

Hemos visto algunos de los factores en la decisin de la longitud del formato de instruccin. Un aspecto igualmente difcil es como asignar los bits en dicho formato. Los compromisos a la hora de decidir son en este caso complejos. Para una longitud de instruccin dada, existe claramente un compromiso entre el nmero de codop. Esto reduce, para un formato de instruccin de una longitud dada, el nmero de bits disponibles para direccionamiento. Hay refinamiento interesante al respecto, consiste en el uso de codops de longitud variable. En esta aproximacin, existe una longitud mnima de codop pero, para algunos de ellos, se pueden especificar operaciones adicionales utilizando ms bits de la instruccin. Los siguientes factores, relacionados entre s, afectan a la definicin del uso dado a los bits de direccionamiento:

Numero de modos de direccionamiento: Numero de operandos: Registros frente a memoria Numero de conjuntos de registros Rango de direcciones Granularidad de direcciones PDP8 PDP10 Ortogonalidad Complitud Direccionamiento directo

FALTA definir eso

Instrucciones de longitud variable FALTA

Formatos de instrucciones del Pentium y power pc

Formatos de instrucciones del Pentium:

Las instrucciones se componen entre 0 y 4 prefijos de instrucciones opcionales un codop de 1 o 2 bits 1 especificacin de direccin opcional, que consta del bits mod r/m y de l bits de ndice de escala un desplazamiento opcional, y un campo inmediato opcional.

Bits de prefijo:

Prefijo de instrucciones: Posee el prefijo lock o algunos de los prefijos de repeticin. El prefijo lock se emplea exclusivamente para asegurar el uso exclusivo de la memoria compartida en entornos multiprocesador. Los prefijos de repeticin indica que se repita una operacin en una cadena, lo que permite al procesador procesar cadenas mucho ms rpido que un software habitual. Segmento explicito : especifica de forma explicita que registro de segmento debera utilizar una instruccin, prevaleciendo sobre la seleccin de registro de segmento implcito Tamao de direccin: El procesador puede direccionar memoria utilizando direcciones de 16 o 32 bits. El tamao de direccin define el tamao del desplazamiento de direcciones generalmente durante el calculo de la direccin efectiva. Tamao de operadores: De igual manera que las instrucciones tiene un tamao implcito de memoria un operador de operandod e 16 a 32 bits. El rpefijo operando tiene un tamao de 32 o 16 bits. La propia instruccin incluye los siguientes campos: Codop:el codop: incluye bits que indican si el operando es de 1 bits o de tamao completo (16 ao 32 bits ) si el campo del dato debe o no extenderse con el signo Mod r/m: aporta informacin de direccionamiento, este bits indica si un operando esta en un registro o en memoria; si esta en memoria, los campos del bits especifica el modo de direccionamiento a utilizar Sib: este bits consta de 3 campos. El campo ss especifica el factor de escala para el indexado de escalado, el campo de indice especifica el campo del indice, el campo base especifica el registro base.

Inmediato: proporcioan el valor de un operando de 8, 16 o 32 bits.

Conclusin

You might also like