Está en la página 1de 21

INTRODUCCION

En este trabajo estudiaremos los distintos tipos de


instrucciones de que constan los juegos de
instrucciones de los ordenadores.

Se vern con especial inters las instrucciones de
control del ujo del programa (bifurcaciones, bucles,
procedimientos, etc.).

Tambin se estudiarn los principios y losofa de
diseo de los ordenadores con conjunto reducido de
instrucciones (RISC)
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.

Existe principalmente de 3 tipos: CISC (Complex Instruction Set
Computer), RISC (Reduced Instruction Set Computer) y SISC (Simple
Instruction Set Computing).

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 encuentran 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 diferentes.
Tipos de instrucciones

Una mquina puede llegar a funcionar con un juego de instrucciones muy
limitado (recurdese, por ejemplo, la mquina de Turing que slo tiene 4
instrucciones, incluso se han diseado mquinas tericas con menos
instrucciones), esto simplicara mucho los circuitos de la mquina.

Sin embargo, un conjunto de instrucciones demasiado simplicado origina,
como consecuencia, unos programas demasiado complejos e inecientes.
Es necesario encontrar un compromiso entre la simplicidad del hardware y
del software.

Un mnimo para llegar a ese compromiso se consigue con los tipos de
instrucciones siguientes: Instrucciones de transferencia de datos.
Instrucciones de transferencia de datos

La operacin de copiar datos de un lugar a otro es la operacin ms simple
y a la vez importante.

Las palabras mover o cargar que aparecen en los juegos de instrucciones
de muchos ordenadores pueden dar lugar a confusin porque no se trata de
mover o cargar sino de copiar (generalmente, en Informtica, la palabra
mover tiene el signicado de copiar borrando el original).

Las instrucciones de transferencia de datos necesitan que se especiquen
el original (fuente u origen) y el lugar donde se desea la copia (destino).
Esta especicacin variar segn sean estos lugares que pueden estar en
tres sitios:
registros del procesador, memoria o cima de pila. Si el acceso es a una
direccin de memoria habr que especicarla de forma explcita, si se trata
de la cima de pila normalmente la especicacin ser implcita, lo mismo
ocurrir si se trata del acumulador.
Instrucciones aritmticas y lgicas

Todos los ordenadores incorporan instrucciones aritmticas en sus juegos
de instrucciones; la utilidad de este tipo de operaciones es evidente y no la
comentaremos.
En cuanto a las operaciones lgicas (AND, OR, NOT y XOR) tienen un uso
muy variado: desde operaciones con bits individuales (TEST, SET, RESET
y CHANGE) hasta el empaquetamiento y desempaquetamiento de
caracteres.

Tambin pueden considerarse dentro de este grupo los desplazamientos y
rotaciones cuya utilidad queda fuera de toda duda. En primer lugar,
veremos cmo se emplean las instrucciones lgicas para realizar
operaciones de bit individual.
Iteracin

En programacin, Iteracin es la repeticin de un proceso dentro de un
programa de computadora. Puede usarse tanto como un trmino genrico
(como sinnimo de repeticin) as como para describir una forma especfica
de repeticin con un estado mutable.

Cuando se usa en el primer sentido, la recursividad es un ejemplo de
iteracin, pero que usa su propia notacin (notacin recursiva), que no es el
caso de iteracin.

Sin embargo, cuando se usa en el segundo sentido (caso ms restringido),
la iteracin describe el estilo de programacin usado en lenguajes de
programacin imperativa. Esto est en contraposicin de la recursividad, la
cual tiene un enfoque ms declarativo.
Procedimientos informticos

Tambin llamado funcin o rutina, en informtica, un procedimiento
representa una serie de instrucciones que se agrupan con un mismo fin.

Un programa de mediana complejidad, un videojuego e incluso una pgina
web suelen contener no uno sino varios de estos conjuntos de tareas.

Cada funcin recibe un nombre y el propsito de su existencia es que se la
pueda utilizar cada vez que se necesite, dentro del contexto en que la
aplicacin lo permita.

Si tomamos el juego Tetris como ejemplo, cada vez que una pieza termina
de caer, se ejecuta una rutina que verifica si se ha completado alguna lnea;
de dar un resultado positivo, probablemente otro procedimiento se encargue
de borrar las filas correspondientes, para finalmente continuar con la partida.
En las aplicaciones que utilizamos a diario, es comn encontrar opciones
para guardar, abrir, crear nuevo documento y cerrar, y detrs de ellas, se
encuentra al menos una funcin.
Corrutinas

son componentes de los programas informticos que generalizan
subrutinas para permitir mltiples puntos de entrada para la suspensin y
reanudacin de la ejecucin en ciertos lugares.

Corrutinas son adecuados para la aplicacin de los componentes del
programa ms conocidas, como las tareas de cooperacin, iteradores,
listas infinitas y tuberas.

El trmino co-rutina se origin por Melvin Conway en un documento de
1963.

Los usos ms comunes

Corrutinas son tiles para poner en prctica lo siguiente:

Las mquinas de estado dentro de un mismo subprograma, donde el
Estado est determinada por el punto de entrada/salida actual del
procedimiento, lo que puede dar lugar a la lectura del cdigo.

Actor modelo de concurrencia, por ejemplo en los videojuegos. Cada actor
tiene sus propios procedimientos, pero que voluntariamente dan el control a
planificador central, que los ejecuta secuencialmente.

Generadores y estos son tiles para la entrada/salida y genricos recorrido
de estructuras de datos.

Comunicar procesos secuenciales en cada sub-proceso es una co-rutina.
Entradas/salidas y operaciones de bloqueo corrutinas rendimiento y un
planificador de ellos desbloquea en eventos de finalizacin del Canal.
Excepciones

Una excepcin en trminos de lenguaje de programacin es la indicacin de
un problema que ocurre durante la ejecucin de un programa. Sin embargo,
la palabra excepcin se refiere a que este problema ocurre con poca
frecuencia generalmente cuando existe algn dato o instruccin que no se
apega al funcionamiento del programa por lo que se produce un error.

El manejo de excepciones permite al usuario crear aplicaciones tolerantes a
fallas y robustos (resistentes a errores) para controlar estas excepciones y
que pueda seguir ejecutando el programa sin verse afectado por el
problema.

En lenguaje java estas excepciones pueden manejarse con las clases que
extienden el paquete Throwable de manera directa o indirecta, pero existen
diversos tipos de excepciones y formas para manejarlas.
Interrupciones

En el contexto de la informtica, una interrupcin (del ingls Interrupt
Request, tambin conocida como peticin de interrupcin) es una seal
recibida por el procesador de un ordenador, indicando que debe
"interrumpir" el curso de ejecucin actual y pasar a ejecutar cdigo
especfico para tratar esta situacin.

Una interrupcin es una suspensin temporal de la ejecucin de un
proceso, para pasar a ejecutar una subrutina de servicio de interrupcin, la
cual, por lo general, no forma parte del programa, sino que pertenece al
sistema operativo o al BIOS. Una vez finalizada dicha subrutina, se reanuda
la ejecucin del programa.

Las interrupciones surgen de la necesidad que tienen los dispositivos
perifricos de enviar informacin al procesador principal de un sistema
informtico.
Instrucciones de control de ujo en el VAX

caso concreto de instrucciones de control de ujo:

Esta mquina tiene diversas clases de instrucciones de control de ujo:
Instrucciones de bifurcacin El VAX tiene dos instrucciones de bifurcacin
incondicional.

BRB y BRW; ambas instrucciones se diferencian slo en el tamao del
desplazamiento (1 o 2 bytes):
para bifurcaciones en que la direccin de destino se encuentre cerca de la
direccin actual (menos de 128 bytes) se emplea BRB, en caso contrario se
emplea BRW.
En cuanto a las bifurcaciones condicionales todas tienen un desplazamiento de
8 bits, esto limita algo su uso y obliga en ocasiones a emplear una
programacin menos estructurada en las bifurcaciones condicionales ya que es
necesaria la instruccin BRW.
En las instrucciones de bifurcacin del VAX slo se especica el
desplazamiento, sin el byte de especicacin de operando convencional en la
forma modo-registro.
Relacin entre el lenguaje mquina y los lenguajes de alto nivel



Este concepto se reere al mbito de validez del nombre de las variables.
Atendiendo a la visibilidad, los nombres de las variables pueden ser de dos
tipos:

Globales: son nombres de variable reconocidos en todo el programa.

Locales: son nombres de variable que slo se reconocen en una parte del
programa, normalmente uno o ms procedimientos.
.


El mbito de visibilidad de los nombres de las variables es un concepto que
maneja solamente el compilador, concretamente en la tabla de smbolos
haciendo que un smbolo slo sea reconocido en su mbito de validez, y no
transciende al cdigo ejecutable del programa.

Sin embargo, hay otro concepto similar que es el de vida de la variable que
se dene como el tiempo que transcurre desde que una variable se
comienza a usar hasta que se la menciona por ltima vez o, lo que es lo
mismo, el tiempo en que es necesario que la variable tenga espacio
reservado en memoria


Clases de variables

En un programa de alto nivel, e incluso tambin en lenguaje ensamblador,
existe un concepto denominado visibilidad.
Este concepto se reere al mbito de validez del nombre de las variables.
Atendiendo a la visibilidad, los nombres de las variables pueden ser de dos
tipos: Globales: son nombres de variable reconocidos en todo el programa.
Locales: son nombres de variable que slo se reconocen en una parte del
programa, normalmente uno o ms procedimientos.
.


El mbito de visibilidad de los nombres de las variables es un concepto que
maneja solamente el compilador, concretamente en la tabla de smbolos
haciendo que un smbolo slo sea reconocido en su mbito de validez, y no
transciende al cdigo ejecutable del programa.

Sin embargo, hay otro concepto similar que es el de vida de la variable que
se dene como el tiempo que transcurre desde que una variable se
comienza a usar hasta que se la menciona por ltima vez o, lo que es lo
mismo, el tiempo en que es necesario que la variable tenga espacio
reservado en memoria


Direccionamiento de estructuras de datos

Una de las caractersticas fundamentales de los lenguajes de alto nivel es la
posibilidad de denir y manejar estructuras de datos complejas. Estas
estructuras plantean los siguientes problemas:

Organizar su almacenamiento en memoria. Encontrar la direccin de cada
uno de sus componentes ms simples. En estas circunstancias el
compilador del lenguaje de alto nivel debe producir una secuencia de
instrucciones para calcular la direccin del componente deseado.

El acceso a las estructuras de datos ms simples (un vector unidimensional,
una estructura o record, etc) puede requerir un nmero muy pequeo de
Tambin puede darse el caso de que la direccin del primer elemento venga
dada por un apuntador, en cuyo caso hay que aadir un nivel de indireccin.


Caractersticas de los procesadores RISC

Un caso algo menos regular es el direccionamiento de estructuras de datos tipo
record o struct. La irregularidad reside en que el tamao de cada uno de los
campos de una estrucutura de este tipo es diferente.

En este caso, la direccin de uno de los campos viene dada por Rref +
desplazamiento primer elemento + desplazamiento campo En esta expresin,
Rref + desplazamiento primer elemento , representa la direccin del primer
elemento y desplazamiento campo, es el desplazamiento del campo deseado
respecto al primer elemento.


Esto puede hacerse as, o, si el compilador est optimizado, ste puede sumar
ambos desplazamientos y utilizar direccionamiento indexado simple.
No puede hacerse esta ltima simplicacin en el caso de un apuntador a un
struct (operador -> del lenguaje C) ya que, en este caso, los dos primeros
trminos estn afectados de una indireccin y la direccin del campo buscado
es: (Rref + desplazamiento primer elemento ) + desplazamiento campo Para
este caso se adeca muy bien el direccionamiento indirecto post indexado del
microprocesador MC68020.

Una tcnica similar puede usarse si una estructura es un campo de otra.

También podría gustarte