viernes, 22 de abril de 2011

UNIDAD 1: TRADUCTORES DE BAJO NIVEL

1.1.- ENSAMBLADORES

El término ensamblador (del inglés assembler) se refiere a un tipo de programa informático que se encarga de traducir un fichero fuente escrito en un lenguaje ensamblador, a un fichero objeto que contiene código máquina, ejecutable directamente por la máquina para la que se ha generado. El propósito para el que se crearon este tipo de aplicaciones es la de facilitar la escritura de programas, ya que escribir directamente en código binario, que es el único código entendible por la computadora, es en la práctica imposible. La evolución de los lenguajes de programación a partir del lenguaje ensamblador originó también la evolución de este programa ensamblador hacia lo que se conoce como programa compilador.


FUNCIONAMIENTO
El programa lee el fichero escrito en lenguaje ensamblador y sustituye cada uno de los códigos nemotécnicos que aparecen por su código de operación correspondiente en sistema binario para la plataforma que se eligió como destino en las opciones específicas del ensamblador es una basura.cc

1.2.- PASADAS DEL TEXTO FUENTE

El programa lee el fichero escrito en lenguaje ensamblador y sustituye cada uno de los códigos nemotécnicos que aparecen por su código de operación correspondiente en sistema binario para la plataforma que se eligió como destino en las opciones específicas del ensamblador es una basura.

1.3.- TRATAMIENTO DE OPERANDOS Y MODOS DE DIRECCIONAMIENTO DE LA MAQUINA OBJETO


§  Ensambladores básicos. Son de muy bajo nivel, y su tarea consiste básicamente en ofrecer nombres simbólicos a las distintas instrucciones, parámetros y cosas tales como los modos de direccionamiento. Además, reconoce una serie de directivas (o meta instrucciones) que indican ciertos parámetros de funcionamiento del ensamblador.

§  Ensambladores modulares, o macro ensambladores. Descendientes de los ensambladores básicos, fueron muy populares en las décadas de los 50 y los 60, antes de la generalización de los lenguajes de alto nivel. Hacen todo lo que puede hacer un ensamblador, y además proporcionan una serie de directivas para definir e invocar macroinstrucciones (o simplemente, macros). 

§  Ensambladores modulares 32-bits o de alto nivel. Son ensambladores que aparecieron como respuesta a una nueva arquitectura de procesadores de 32 bits, muchos de ellos teniendo compatibilidad hacia atrás pudiendo trabajar con programas con estructuras de 16 bits. Además de realizar la misma tarea que los anteriores, permitiendo también el uso de macros, permiten utilizar estructuras de programación más complejas propias de los lenguajes de alto nivel.



1.4.- ENSAMBLADORES RESIDENTES Y CRUZADOS
Ensambladores Cruzados (Cross-Assembler).
Se denominan así los ensambladores que se utilizan en una computadora que posee un procesador diferente al que tendrán las computadoras donde va a ejecutarse el programa objeto producido.
El empleo de este tipo de traductores permite aprovechar el soporte de medios físicos (discos, impresoras, pantallas, etc.), y de programación que ofrecen las máquinas 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 ejecución, 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 hacía 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, también 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 pequeños sistemas de control y sencillos automatismo empleando microprocesadores (1).
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.


1.5.- ENSAMBLE CONDICIONAL

Se emplean para que el ensamblador evalúe unas condiciones y, según ellas, ensamble o no ciertas zonas de código. Es frecuente, por ejemplo, de cara a generar código para varios ordenadores: pueden existir ciertos símbolos definidos que indiquen en un momento dado si hay que ensamblar ciertas zonas del listado o no de manera condicional, según la máquina. En los fragmentos en ensamblador del código que generan los compiladores también aparecen con frecuencia (para actuar de manera diferente, por ejemplo, según el modelo de memoria). Es interesante también la posibilidad de definir un símbolo que indique que el programa está en fase de pruebas y ensamblar código adicional en ese caso con objeto de depurarlo. Sintaxis:

IFxxx [símbolo/exp./arg.] ; xxx es la condición

...ELSE ; el ELSE es opcional
...ENDIF
IF expresion (expresión distinta de cero)

IFE expresión (expresión igual a cero)

IF1 (pasada 1 del ensamblador)

IF2 (pasada 2 del ensamblador)

IFDEF símbolo (símbolo definido o declarado como externo)

IFNDEF símbolo (símbolo ni definido ni declarado como externo)

IFB <argumento> (argumento en blanco en macros -incluir '<' y '>'-)

IFNB <argumento> (lo contrario, también es obligado poner '<' y '>')

IFIDN <arg1>, <arg2> (arg1 idéntico a arg2, requiere '<' y '>')

IFDIF <arg1>, <arg2> (arg1 distinto de arg2, requiere '<' y '>')(1)



1.6.-  MICROPROCESADORES

El microprocesador es el cerebro del ordenador. Se encarga de realizar todas las operaciones de cálculo y de controlar lo que pasa en el ordenador recibiendo información y dando órdenes para que los demás elementos trabajen. Es el jefe del equipo y, a diferencia de otros jefes, es el que más trabaja.
En los equipos actuales se habla fundamentalmente de los procesadores Pentium D o Core 2 Duo de Intel y Athlon 64 y Athlon 64 X2 de AMD. Además, están muy extendidos procesadores no tan novedosos, como los Pentium 4 de Intel y los chips Athlon XP de AMD.
El procesador es un circuito integrado constituido por millones de componentes electrónicos integrados. Constituye la unidad central de procesamiento (CPU) de un PC catalogado como microcomputador.
Desde el punto de vista funcional es, básicamente, el encargado de realizar toda operación aritmético-lógica, de control y de comunicación con el resto de los componentes integrados que conforman un PC, siguiendo el modelo base de Von Neumann. También es el principal encargado de ejecutar los programas, sean de usuario o de sistema; sólo ejecuta instrucciones programadas a muy bajo nivel, realizando operaciones elementales, básicamente, las aritméticas y lógicas, tales como sumar, restar, multiplicar, dividir, las lógicas binarias y accesos a memoria.




1.7.-  BIBLIOTECA DE MACROS

Una macro es un grupo de instrucciones repetitivas en un programa que se codifican solo una vez y pueden utilizarse cuantas veces sea necesario.

Una de las facilidades que ofrece el uso de las macros es la creación de bibliotecas, las cuales son grupos de macros que pueden ser incluidas en un programa desde un archivo diferente.

La creación de estas bibliotecas es muy sencilla, unicamente tenemos que escribir un archivo con todas las macros que se necesitarán y guardarlo como archivo de texto.

Para llamar a estas macros solo es necesario utilizar la instrucción Include NombreDelArchivo, en la parte de nuestro programa donde escribiriamos normalmente las macros, esto es, al principio de nuestro programa(1).

(1 Dir. Members.es.tripod.de/patricio/ensam/ensam1.htm) Macros y Pocedimento

(2.Org. De Computadoras Un Enfoque Estructurado, Tanenbaum, P.200)



1.8.-  EXPANSION CONDICIONAL

No hay comentarios:

Publicar un comentario