Sunteți pe pagina 1din 6

1.

6 Estructura de un traductor
Traductores
Un traductor es un programa que recibe como entrada cdigo escrito en un cierto lenguaje y
produce como salida cdigo en otro lenguaje. Generalmente el lenguaje de entrada es de
ms alto nivel que el de salida. Ejemplos de traductores son los ensambladores y los
compiladores.
Un ensamblador es un programa que traduce de un lenguaje ensamblador a lenguaje
mquina, mientras que un compilador es un programa que traduce de un lenguaje de alto
nivel
a
un
lenguaje
de
bajo
nivel
o
a
lenguaje
mquina.
Un traductor es un programa que toma el texto escrito en un lenguaje (el lenguaje fuente) y
lo convierte en el texto equivalente en un segundo lenguaje (el lenguaje destino u objeto).
Si el fuente es un lenguaje abstracto o de alto nivel y si el objetivo es un lenguaje de
ensamble de bajo nivel o de mquina, el traductor es un compilador.

Ensambladores.
Que es ensamblador y para qu sirve?
Cuando se empezaron a utilizar smbolos nmotcnicos, se escribieron programas para
traducir automticamente los programas escritos en lenguaje ensamblador a lenguaje
mquina. A estos programas traductores se les llamo ensambladores.

La entrada para un ensamblador es un programa fuente escrito en lenguaje ensamblador.


La salida es un programa objeto, escrito en lenguaje de mquina. El programa objeto
incluye tambin la informacin necesaria para que el cargador pueda preparar el programa
objeto para su ejecucin.

Para evitar confusiones, de aqu en adelante llamaremos lenguaje ensamblador al conjunto


de nemotcnicos y a las reglas para su manejo. Al programa que traduce un programa
objeto a partir de un programa escrito en lenguaje ensamblador lo llamaremos
ensamblador.

Motivos para utilizarlo.

Rapidez: Como el programador directamente selecciona las instrucciones que se


ejecutan en el programa, el programa final queda mas optimizado que un programa
generado por un compilador.

Mayor control de la computadora: Un programa puede accesar directamente


cualquier componente y perifrico de la computadora.

Independencia del lenguaje: No depende de libreras o del lenguaje mismo para


realizar una tarea especifica. Lenguajes como el Basic limitan al programador a lo
que el lenguaje puede hacer.

La mayora de las computadoras pueden ensamblar: Los recursos necesarios para


ensamblar un programa son mucho menores que los compiladores o interpretes. El
ensamblador generalmente es ms rpido ensamblando un programa que un
compilador generando un archivo ejecutable.

Motivos para no utilizarlo.


Desafortunadamente, tambin existen motivos para no crear los programas con
ensamblador.

Dependencia del hardware: El cdigo se hace en extremo dependiente del


microprocesador, de los dispositivos, de los controladores, etc. Este punto ser
analizado con ms detenimiento en dependencias de hardware.

Mayor tiempo de codificacin: El nmero de lneas de un programa hecho en


ensamblador es mayor a uno hecho en un lenguaje de alto nivel (por ejemplo:
Funcin en C puede realizar varias decenas o centenas de instrucciones del
microprocesador).

Comprensin ms profunda de la computadora: Entender un lenguaje de alto nivel


es generalmente ms sencillo que el ensamblador. Comprender ensamblador
requiere conocimientos ms exactos sobre el funcionamiento interno de la
computadora.

Errores ms frecuentes en el programa: El evitar un error o encontrar alguno que ya


exista es difcil. Las herramientas para este caso (como el CodeView y el
TurboDebbuger) ayudan en gran medida a ver lo que est ocurriendo en la mquina,
pero no localizan los errores.

Entonces, cuando utilizo ensamblador y cuando no?


Depende del programa a desarrollar. Si el programa debe controlar en gran medida los
componentes internos de la computadora o debe ser lo suficientemente veloz, entonces es
recomendable utilizarlo. Si se requiere un sistema grande y no se dispone de mucho tiempo
para entregarlo, entonces es mejor juntar un lenguaje de alto nivel con ensamblador (las
funciones bsicas del programa realizarlas en ensamblador, y el programa en general

codificarlo con el lenguaje de alto nivel). Este punto se discute mas adelante en
ensamblador y lenguajes de alto nivel.
http://www.itlp.edu.mx/publica/tutoriales/progsis1/tema22.htm
Tipos de Ensambladores.
Aunque todos los ensambladores realizan bsicamente las mismas tareas, podemos
clasificarlos de acuerdo a caractersticas.
As podemos clasificarlos en:

Ensambladores Cruzados (Cross-Assembler).

Se denominan as los ensambladores que se utilizan en una computadora que posee un


procesador diferente al que tendrn las computadoras donde va a ejecutarse el programa
objeto producido.
El empleo de este tipo de traductores permite aprovechar el soporte de medios fsicos
(discos, impresoras, pantallas, etc.), y de programacin que ofrecen las mquinas potentes
para desarrollar programas que luego los van a ejecutar sistemas muy especializados en
determinados tipos de tareas.

Ensambladores Residentes.

Son aquellos que permanecen en la memoria principal de la computadora y cargan, para su


ejecucin, al programa objeto producido. Este tipo de ensamblador tiene la ventaja de que
se puede comprobar inmediatamente el programa sin necesidad de transportarlo de un lugar
a otro, como se haca en cross-assembler, y sin necesidad de programas simuladores.
Sin embargo, puede presentar problemas de espacio de memoria, ya que el traductor ocupa
espacio que no puede ser utilizado por el programador. Asimismo, tambin ocupar
memoria el programa fuente y el programa objeto. Esto obliga a tener un espacio de
memoria relativamente amplio. Es el indicado para desarrollos de pequeos sistemas de
control y sencillos automatismo empleando microprocesadores.
La ventaja de estos ensambladores es que permiten ejecutar inmediatamente el programa; la
desventaja es que deben mantenerse en la memoria principal tanto el ensamblador como el
programa fuente y el programa objeto.

Macroensambladores.

Son ensambladores que permiten el uso de macroinstrucciones (macros). Debido a su


potencia, normalmente son programas robustos que no permanecen en memoria una vez
generado el programa objeto. Puede variar la complejidad de los mismos, dependiendo de
las posibilidades de definicin y manipulacin de las macroinstrucciones, pero
normalmente son programas bastantes complejos, por lo que suelen ser ensambladores
residentes.

Microensambladores.

Generalmente, los procesadores utilizados en las computadoras tienen un repertorio fijo de


instrucciones, es decir, que el intrprete de las mismas interpretaba de igual forma un
determinado cdigo de operacin.
El programa que indica al intrprete de instrucciones de la UCP cmo debe actuar se
denomina microprograma. El programa que ayuda a realizar este microprograma se llama
microensamblador. Existen procesadores que permiten la modificacin de sus
microprogramas, para lo cual se utilizan microensambladores.

Ensambladores de una fase.

Estos ensambladores leen una lnea del programa fuente y la traducen directamente para
producir una instruccin en lenguaje mquina o la ejecuta si se trata de una
pseudoinstruccin. Tambin va construyendo la tabla de smbolos a medida que van
apareciendo las definiciones de variables, etiquetas, etc.
Debido a su forma de traduccin, estos ensambladores obligan a definir los smbolos antes
de ser empleados para que, cuando aparezca una referencia a un determinado smbolo en
una instruccin, se conozca la direccin de dicho smbolo y se pueda traducir de forma
correcta. Estos ensambladores son sencillos, baratos y ocupan poco espacio, pero tiene el
inconveniente indicado.

Ensambladores de dos fases.

Los ensambladores de dos fases se denominan as debido a que realizan la traduccin en


dos etapas. En la primera fase, leen el programa fuente y construyen una tabla de
smbolos; de esta manera, en la segunda fase, vuelven a leer el programa fuente y pueden ir
traduciendo totalmente, puesto que conocen la totalidad de los smbolos utilizados y las
posiciones que se les ha asignado. Estos ensambladores son los ms utilizados en la
actualidad.

http://www.itlp.edu.mx/publica/tutoriales/progsis1/tema221.htm
El proceso de ensamble de uno, dos o ms pasos.
Como se vio en la seccin anterior, existen ensambladores que realizan su tarea en una o
ms fases o pasos.
El proceso de ensamble de un paso consiste en leer una lnea de programa fuente y
traducirla a lenguaje mquina cuando se trata de una instruccin, o se ejecuta si es una
seudoinstruccin.
La tabla de smbolos se va construyendo a medida que se avanza en la lectura de las lneas
del programa fuente.
Para que el ensamble de un paso funciones, todos los smbolos deben estar definidos antes
de emplearse. Esto debido a que, para traducir correctamente cada instruccin, se debe
conocer la direccin de cada uno de los smbolos que intervienen en ella. En otras palabras,
no pueden quedar referencias pendientes porque ya no habr otra oportunidad de
resolverlas.
Tampoco podrn hacerse saltos hacia lneas posteriores. No es posible saltar hacia una lnea
cuya etiqueta todava no ha sido definida.
Para resolver el problema que presenta el proceso de ensamble de un paso, se utiliza el
proceso de ensamble de dos pasos o fases. En la primera fase, se lee el programa fuente y se
construye la tabla de smbolos.
En la segunda fase, se vuelve a leer el programa fuente y se traduce totalmente ya que se
conoce la totalidad de los smbolos utilizados (incluyendo las etiquetas) y las posiciones de
memoria que se les han asignado. Como ya se conocen las direcciones de las etiquetas
utilizadas, pueden realizarse saltos hacia adelante.

S-ar putea să vă placă și