You are on page 1of 5

JUEGO DE INSTRUCCIONES

Un conjunto de instrucciones o repertorio de instrucciones, juego de instrucciones o ISA (del ingls Instruction Set Architecture, Arquitectura del Conjunto de Instrucciones) es una especificacin que detalla las instrucciones que una CPU de un ordenador puede entender y ejecutar, o el conjunto de todos los comandos implementados por un diseo particular de una CPU. El trmino describe los aspectos del procesador generalmente visibles a un programador, incluyendo los tipos de datos nativos, las instrucciones, los registros, la arquitectura de memoria y las interrupciones, entre otros aspectos. Dependiendo de cmo el procesador almacena los operandos de las instrucciones de la CPU, existen tres tipos de juegos de instrucciones: 1. Juego de instrucciones para arquitecturas basadas en pilas. 2. Juego de instrucciones para arquitecturas basadas en acumulador. 3. Juego de instrucciones para arquitecturas basadas en registros. Existe principalmente de 3 tipos de instrucciones para arquitecturas basadas en registros: CISC (Complex Instruction Set Computer), RISC (Reduced Instruction Set Computer) y SISC (Specific Instruction Set Computer). La arquitectura del conjunto de instrucciones (ISA) se emplea a veces para distinguir este conjunto de caractersticas de la microarquitectura, que son los elementos y tcnicas que se emplean para implementar el conjunto de instrucciones. Entre estos elementos se encuentras las microinstrucciones y los sistemas de cach. Procesadores con diferentes diseos internos pueden compartir un conjunto de instrucciones; por ejemplo el Intel Pentium y AMD Athlon implementan versiones casi idnticas del conjunto de instrucciones x86, aunque tienen diseos internos completamente opuestos. Se puede comprobar que para que un conjunto de instrucciones sea completo solo se necesitan cuatro instrucciones: -> escritura -> mover a la izquierda una posicin y leer -> mover a la derecha una posicin y leer -> parar En esta idea se basan las arquitecturas RISC, no obstante, con este conjunto no se puede conseguir la eficiencia del repertorio de instrucciones por lo que en la prctica el conjunto suele ser ms amplio en aras de conseguir un mejor rendimiento, tanto en uso de recursos como en consumo de tiempo.

Tipos de instrucciones y ejemplos


Transferencia de datos: Copian datos de un origen a un destino, sin modificar el origen y normalmente sin afectar a los flags o indicadores de condicin. Pueden transferir palabras, fracciones de palabras (bytes, media palabra) o bloques completos de n bytes o palabras. Estas operaciones pueden ser: -> registro - registro

-> registro - memoria -> memoria - registro -> memoria - memoria Nemotcnicos ms frecuentes:

move: copia el contenido de un registro(o memoria) a otro. store: copia el contenido de un registro a memoria. load: copia el contenido de una posicin de memoria a un registro. move block: copia un bloque de datos de una posicin de memoria a otra. move multiple: copia del origen en varias posiciones de memoria. exchange: intercambia el contenido de dos operandos. clear: pone a 0 el destinto. (todos los bits) set: pone a 1 el destino. (todos los bits) push: introduce un dato en la cabecera de la pila. (indicada por el SP) pop: saca un dato de la cabecera de la pila. (indicada por el SP) Instrucciones aritmticas: Son efectuadas por la ALU y suelen cambiar los flags o indicadores de condicin.

Nemotcnicos ms frecuentes:

add: Suma. add with carry: Suma con acarreo. subtrack: Resta. subtrack with borrow: Resta teniendo en cuenta el adeudo anterior. increment: incrementa en 1 un valor. decrement: decrementa en 1 un valor. multiply: multiplica. divide: divide. extend: aumenta el operando de tamao. negate: cambia de signo. absolute: valor absoluto. Instrucciones de comparacin Instrucciones lgicas Instrucciones de Desplazamiento Instrucciones de bits Instrucciones de control

Llamadas a subrutinas Gestin de interrupciones Instrucciones de E/S Instrucciones de comparacin: Suelen preceder a una instruccin de bifurcacin condicional y modifican los flags. No hay que pensar que las instrucciones de salto condicional dependen de este repertorio, ya que lo nico que hace el salto condicional es consultar los flags y salta si precede, pero no depende de ninguna instruccin de comparacin. (de hecho cualquier operacin aritmtica realizada anteriormente a un salto condicional puede provocar que este "salte"). Nemotcnicos ms frecuentes:

compare: Resta los dos operandos pero no almacena el resultado, solo modifica los flags. test: compara un cierto valor especificado con el 0. Instrucciones lgicas: Realizan operaciones booleanas "bit a bit" entre dos operandos. Como las aritmticas tambin modifican los flags.

Nemotcnicos ms frecuentes:

and: el "y" lgico. or: el "o inclusivo" lgico. xor: el "o exclusivo" lgico. not: la negacin lgica. (complemento a 1, no confundir con el cambio de signo "negate" que es el complemento a 2) Instrucciones de Desplazamiento: Pueden ser aritmtico o lgico y pueden incluir o no rotaciones. Pueden ser de izquierda a derecha.

Nemotcnicos ms frecuentes:

shift: desplazamiento aritmtico o lgico. rotate: rotacin con o sin acarreo.

Instrucciones de bits: Comprueban un bit del operando y su valor lo reflejan en el indicador de cero. Pueden poner un bit a 0 o complementarlo. Nemotcnicos ms frecuentes:

bit test: comprueba un bit. bit clear: comprueba un bit y lo pone a 0. bit set: comprueba un bit y lo pone a 1. Instrucciones de control: Permiten modificar la secuencia normal de ejecucin de un programa, puede hacerse por salto condicional relativo o absoluto.

Se clasifican en cuatro grupos:

-> salto incondicional -> salto condicional -> Llamada a subrutinas -> Gestin de las interrupciones saltos: Pueden ser condicionales o incondicionales, se suelen especificar como jump o brantch, y en el caso de los condicionales se suele llamar jcond o bcond donde cond es una o ms letras que indican la condicin que ha de cumplirse para que el salto se produzca. -> Incondicional: salta sin comprobar ninguna condicin. Nemotcnicos ms frecuentes: jump o brantch -> Condicional: salta si la condicin se cumple. Nemotcnicos ms frecuentes: jcond o bcond

Llamadas a subrutinas: Invoca la ejecucin de funciones anteriormente definidas. Nemotcnicos ms frecuentes: call (llamada) y ret (retorno)

Gestin de interrupciones: Se usan para llamar a las rutinas de servicio de interrupcin y esto se puede hacer por hardware o bien por software. Necesita una instruccin similar a return para retornar al contexto anterior pero restableciendo el estado de la mquina, para no afectar a la aplicacin a la cual se interrumpi (iret).

Instrucciones de E/S: Son instrucciones de transferencia salvo que el origen/destino de dicho flujo es un puerto de un dispositivo de E/S. Estas instrucciones pueden darse mediante dos alternativas:

->E/S "mapeada" en memoria: Los perifricos tienen direcciones asignadas de la MP por lo que no se necesitan instrucciones especiales y las operaciones se realizan con las ya vistas, como son: load, store y move. ->E/S independiente: Necesitan unas instrucciones especiales para indicarle al procesador que nos estamos refiriendo al mapa de direcciones de E/S, ya que este mapa y el mapa de memoria son disjuntos. Nemotcnicos ms frecuentes:

input o read: Premite leer informacin de un puerto y trasladarla a memoria principal. output o write: Permite escribir informacin en un puerto de un dispositivo. test i/o: Lee informacin de control de un perifrico. control i/o: Enva informacin de control hacia un perifrico.

Instrucciones de control o miscelneas: Nemotnicos ms frecuentes:


halt: Detiene la ejecucin del programa hasta que una interrupcin arranca otro programa. wait: Sirve para deterner la ejecucin de un programa hasta que sucede un determinado evento que no es una interrupcin (otra condicin externa al primer programa). nop: No realiza ninguna operacin, sirve para rellenar huecos en un programa o temporizar esperas. enable: Habilita las interrupciones. disable: Deshabilita las interrupciones. test and set: Se utiliza para la implementacin de la exclusin mutua, esto es, que un procesador no pueda acceder a un determinado recurso que est siendo usado por otro procesador en ese mismo momento.