Una instrucción se puede ver como una cadena de bits que se
agrupan en campos con tamaños diferentes.
Las instrucciones que es capaz de realizar la UCP se
denominan instrucciones máquina.
El lenguaje que se utiliza para su codificación es el
lenguaje máquina y, de acuerdo con su función, se clasifican en:
-
Instrucciones de transferencia de datos.
Transfieren datos
-
Instrucciones aritméticas, lógicas y de
comparación. Operaciones
-
Instrucciones de transferencia de control.
Secuencia de ejecución
-
Instrucciones de gobierno. Controlan estado CPU
Tipos
·
Instrucciones
de transferencia de datos: en este tipo de instrucciones, se transfieren
datos desde una localización a otra. Los pasos que se siguen para realizarlo
son:
1.
Determinación de las direcciones de origen y
destino de memoria.
2.
Realización de la transformación de memoria
virtual a memoria real.
3.
Comprobación de la caché.
4.
Inicio del proceso de lectura/escritura en la
memoria.
·
Instrucciones
aritméticas: pueden implicar transferencia de datos antes y/o después.
Realizan operaciones aritméticas de las que se encarga la ALU. Se pueden
clasificar en de 1 operando (valor absoluto, negación) y 2 operandos (suma,
resta).
·
Instrucciones
lógicas: al igual que las aritméticas, la ALU se encarga de realizar estas
operaciones, que en este caso son de tipo lógico.
·
Instrucciones
de conversión: similares a las aritméticas y lógicas. Pueden implicar
lógica especial para realizar la conversión.
·
Instrucciones
de transferencia de control: actualizan el contador de programa (PC).
Administran las llamadas/retornos a las subrutinas, el paso de parámetros y el
enlazado.
·
Instrucciones
de E/S (entrada/salida): administran los comandos de entrada/salida. Si hay
un mapa de memoria de entrada/salida, determina la dirección de este mapa.
Repertorio
Las instrucciones de un lenguaje de programación se pueden
clasificar en 4 grupos:
·
Instrucciones
de transferencias de datos: Son aquellas de entrada o lectura y de salida o
escritura. En el caso de las instrucciones de entrada o lectura, se lleva el
dato de entrada o lectura desde la unidad de entrada a la memoria. Si por el contrario
es una instrucción de salida o escritura, se lleva el dato de la memoria a la
unidad de salida.
·
Instrucciones
de tratamiento: Se trata de las instrucciones aritmético-lógicas y las de
desplazamientos. Así como suma de datos o comparaciones.
·
Instrucciones
de flujo de control o de bifurcación y salto: Las instrucciones de flujo de
control son aquellas instrucciones que alteran el orden secuencial de la
ejecución de un programa. También hay instrucciones que posibilitan la
interrupción de la ejecución o saltar a ejecutar otro programa. Cuando termina
cualquiera de estas instrucciones, el programa continúa ejecutándose desde el
punto en el que se interrumpió.
·
Otras
instrucciones: Por ejemplo, la detención del funcionamiento del computador
a la espera de una acción del usuario.
http://es.wikipedia.org/wiki/Instrucci%C3%B3n_inform%C3%A1tica
Una segunda clasificación de las instrucciones máquina hace
referencia a su formato y al número de operandos que intervienen en ellas.
Instrucciones:
a) Código de operación (CO), que indica qué operación
se debe realizar por el procesador.
b) Operandos, relativos a los datos, que son
necesarios para realizar su misión.
·
En función de esto tenemos:
·
Instrucciones de tres operandos
·
Instrucciones de dos operandos
·
Instrucciones de un solo operando
·
Instrucciones sin operandos
Instrucciones de tres
operandos
Constan en primer lugar de código de operación al que siguen
tres operandos, de los cuales, los dos primeros son las direcciones de los
argumentos que hay que operar y el tercero es la dirección donde se depositará el
resultado.
Este formato se adoptó en algunos de los primeros
computadores, en los que la capacidad de la memoria era pequeña y por tanto
bastaba con pocos bits para los campos de dirección. De no ser así, la longitud
del formato resulta ser excesivamente grande.
Instrucciones de dos operandos
Contienen el código de operación y dos operandos, de los que
uno de ellos actúa, además, como receptor del resultado de la operación.
En las máquinas que utilizan instrucciones con dos
direcciones el resultado puede depositarse en el lugar que inicialmente ocupaba
uno de los operandos.
Instrucciones de un
operando
Se utilizan generalmente en máquinas cuya arquitectura
funciona con filosofía de acumulador. El acumulador de la UAL contiene
previamente el primer argumento de la operación, el segundo es el contenido en
la propia instrucción, y después de ser operados ambos por el circuito
operacional, el resultado queda depositado de nuevo en el acumulador.
Instrucciones sin operandos
Una pila está formada por datos almacenados en orden
consecutivo en la memoria, existiendo un registro especial, denominado puntero
de pila, que nos indica la dirección del último dato introducido en ella.
Cuando se saca un dato de la misma, el puntero de la pila
decrece apuntando al dato que está a continuación en la pila hacia lo que
llamaremos fondo de la misma y que será aquel dato que se introdujo en primer
lugar.
http://saia.psm.edu.ve/moodle/pluginfile.php/223209/mod_resource/content/1/organizacion_del_computador.pdf
Código de Operación
Es la porción de una instrucción
de lenguaje de máquina que especifica la operación a ser realizada. Su
especificación y formato serán determinados por la arquitectura del conjunto de
instrucciones (ISA) del componente de hardware de computador - normalmente un
CPU, pero posiblemente una unidad más especializada. Una instrucción completa
de lenguaje de máquina contiene un opcode y, opcionalmente, la especificación
de uno o más operandos - sobre los que la operación debe actuar. Algunas
operaciones tienen operandos implícitos, o de hecho ninguno. Algunas ISAs tiene
instrucciones con campos definidos para los opcodes y operandos, mientras que
otras (ej. la arquitectura Intel x86) tienen una estructura más complicada y de
propósito específico. Los operandos sobre los cuales los opcodes aplican
pueden, dependiendo de la arquitectura del CPU, consistir de registros, valores
en memoria, valores almacenados en la pila, puertos de I/O, bus, etc. Las
operaciones que un opcode puede especificar pueden incluir aritmética, copia de
datos, operaciones lógicas, y control del programa.
Una maquina con instrucciones de
16 bits, que realiza operaciones hasta con 3 operandos y que éstos siempre
están en alguno de sus 16 registros. Esto quiere decir que se necesitan 4bits
por operando, y que si puede haber hasta 3 operandos, se necesitan 12 bits para
ellos. Esto nos deja con 4 bits para códigos, lo que significa que puede haber
hasta 16 operaciones distintas con 3 operandos.
Códigos de Operación con
Extensión
15 instrucciones de 3 operaciones: Se comienza con el
formato de las instrucciones de 3 operandos de 4 bits. Para representar 15 códigos
de operación se requieren 4 bits, y los 12 bits restantes se utilizan para los
tres operandos de 4 bits.
Los códigos de operación serán el
0000, 0001, …., hasta el 1110. Y sobran una combinación de 165 que ofrecen los
4 bits.
14 instrucciones de 2 operaciones: La combinación que nos
sobraba del formato anterior (la 1111) se utiliza ahora para indicar un nuevo
formato de instrucción. Es decir, las instrucciones cuyos 4 bits de mayor peso
sean 1111 tendrán un código de operación extendido con los 4 bits siguientes. En
este nuevo formato, el código de operación ocupa 8 bits, donde los 4 de mayor
peso están siempre a 1. Los ocho bits restantes se utilizan para indicar los
dos operandos de este formato, y sobran 2 combinaciones 1111 1110 y 1111 1111.
31 instrucciones de 1 operando: Si los 4 bits de mayor peso
a 1 indican que el código de operación se extiende o amplía con otros 4, cuando
los 7 bits de mayor peso son 1111 111, indica que el formato de tales
instrucciones está formando por un código de operación de 12 bits (los de mayor
peso). Los 4 bits restantes se utilizan como operando.
Para este formato se dispone
ahora de 5 bits para expresar 31 nuevas instrucciones, las que tienen los códigos
desde 1111 1110 0000 hasta 1111 1111 1110. Ahora sobra una combinación de las
disponibles.
16 instrucciones sin operandos explícitos: Ahora encontramos
que los 12 bits de mayor peso a 1 indican un nuevo formato de instrucción con
un código de operación de 16 bits.
Los 4 bits de la ampliación son los
que ofrecen los últimos 16 códigos de operación para las instrucciones sin
operandos explícitos.
Cuando se planifican formatos de
instrucciones con códigos de operación con extensión para cada formato se debe
reservar alguna de las combinaciones posibles para expresar una extensión en el
código de operación.
http://saia.psm.edu.ve/moodle/pluginfile.php/327780/mod_resource/content/1/Visi%C3%B3n%20del%20programador%20Maquina.pdf
http://saia.psm.edu.ve/moodle/pluginfile.php/327780/mod_resource/content/1/Visi%C3%B3n%20del%20programador%20Maquina.pdf
Con el uso de expansión de códigos de operación se puede
minimizar la longitud promedio de las instrucciones codificando cada instrucción
de forma que el número de bits requerido sea el mínimo.
Por otro lado se puede hacer que todas las instrucciones
tengan la misma longitud, asignando los códigos de operación más cortos a las
instrucciones que necesiten más bits para especificar otras cosas.
Se puede también minimizar el tamaño promedio de las
instrucciones escogiendo códigos de operación más cortos para las instrucciones
más comunes y más largos para las menos usadas.
http://ldc.usb.ve/~rgonzalez/organizacion/laminas/Laminas_FormatodeInstrucciones.pdf