You are on page 1of 8

INSTITUTO TECNOLGICO SUPERIOR DE COATZACOALCOS.

MATERIA:

Lenguajes y autmatas II.

GRADO Y GRUPO:

7 A

PRESENTAN:

GALICIA GUZMN TOMS YUSSEF

FACILITADOR:

Grajales Vzquez Arturo Ivn

Contenido
Introduccin............................................................................................................................... 3
UNIDAD 4 GENERACION DE CODIGO OBJETO .............................................................. 3
4.1 REGISTROS......................................................................................................................... 4
4.2 LENGUAJE ENSAMBLADOR. ......................................................................................... 5
4.3 Lenguaje mquina. ............................................................................................................ 6
4.4 Administracin de memoria. .......................................................................................... 6
BIBLIOGRAFIA .......................................................................................................................... 8

Introduccin
La generacin de cdigo es una de las fases mediante el cual un compilador
convierte un programa sintcticamente correcto en una serie de instrucciones a
ser interpretadas por una mquina. Casi siempre este trmino se refiere al
cdigo mquina que puede ejecutarse directamente en la unidad central de
proceso (CPU) del sistema, pero tambin puede ser cdigo fuente de lenguaje
ensamblador o una variante de cdigo mquina. Tambin se debe mencionar
que los registros del procesador se emplean para controlar instrucciones en
ejecucin, manejar direccionamiento de memoria y proporcionar capacidad
aritmtica. Los registros son espacios fsicos dentro del microprocesador.

UNIDAD 4 GENERACION DE CODIGO OBJETO


La fase final de un compilador es la generacin de cdigo objeto, que por lo
general consiste en cdigo mquina reubicable o cdigo ensamblador. Cada una
de las variables usadas por el programa se traduce a una direccin de memoria
(esto tambin se ha podido hacer en la fase de generacin de cdigo intermedio).
Se seleccionan posiciones de memoria relativas o registros para las variables y
cada sentencia del cdigo intermedio

se traduce a una secuencia de

instrucciones que ejecutan la tarea. Un aspecto decisivo es la asignacin de


variables a registros. Dicha fase intenta transformar el cdigo intermedio en una
forma de la que se pueda producir cdigo objeto ms eficiente.

Caractersticas:
El programa destino debe preservar el significado semntico del programa fuente
y ser de alta calidad; es decir, debe hacer un uso efectivo de los recursos
disponibles de la maquina destino. Adems, el generador de cdigo en si debe
ejecutarse con eficiencia.

Un generador de cdigo tiene tres tareas principales:

Seleccin de instrucciones.

Reparticin y Asignacin de registros.

Ordenamiento de instrucciones.

4.1 REGISTROS
Las consideraciones a tener para el generador de cdigo consisten en la
asignacin de registros. Los registros son los elementos ms valiosos y escasos
en la fase de generacin de cdigo, puesto que el CPU solamente puede
procesar datos que se encuentren en registros. Adems, las instrucciones que
implican operandos en registros son ms cortas y rpidas que las de operandos
en memoria.
A menudo el uso de los registros se divide en dos subproblemas:
1.- Reparticin de registros, durante la cual se selecciona el conjunto de variables
que residirn en los registros, en cada punto del programa.
2.- Asignacin de registros, durante la cual se elige el registro especfico en el
que residir una variable.
Es difcil encontrar una asignacin ptima de registros a variables, incluso en las
mquinas con un solo registro. En sentido matemtico, el problema es NP completo. El problema se complica an ms debido a que el hardware y el
sistema operativo de la mquina destino pueden requerir que se sigan ciertas
convenciones de uso de registros.
Descriptores de registros y direcciones.
El algoritmo de generacin de cdigo utiliza descriptores para seguir de cerca el
contenido de los registros y las direcciones para los nombres.
1.- Un descriptor de registros sabe lo que hay en cada registro. Es consultado
siempre que se necesite un nuevo registro. Se supone que inicialmente el
descriptor de registros muestra que todos los registros estn vacos. (Si los
registros se asignan entre los bloques, este no sera el caso.) Conforme avanza
la generacin de cdigo para el bloque, cada registro contiene siempre el valor
de cero o ms nombres.
2.- Un descriptor de direcciones conoce la posicin (o posiciones) donde se
puede encontrar el valor en curso del nombre durante la ejecucin. La posicin
puede ser un registro, una posicin en la pila, una direccin de memoria o
conjunto de estos porque cuando se copia, un valor tambin pertenece donde
estaba, esta informacin se puede almacenar en la tabla de smbolos y se utiliza
para determinar el mtodo de acceso a un nombre.
4

4.2 LENGUAJE ENSAMBLADOR.


Segunda generacin de lenguajes. Versin simblica de los lenguajes mquina
(MOV, ADD).La comunicacin en lenguaje de mquina es particular de cada
procesador que se usa, y programar en este lenguaje es muy difcil y tedioso,
por lo que se empez a buscar mejores medios de comunicacin con sta. Los
lenguajes ensambladores tienen ventajas sobre los lenguajes de mquina.
Ahorran tiempo y requieren menos atencin a detalles.
El lenguaje ensamblador es un tipo de lenguaje de bajo nivel utilizado para
escribir programas informticos, y constituye la representacin ms directa del
cdigo mquina especfico para cada arquitectura de computadoras legible por
un programador. Fue usado ampliamente en el pasado para el desarrollo de
software, pero actualmente slo se utiliza en contadas ocasiones, especialmente
cuando se requiere la manipulacin directa del hardware o se pretenden
rendimientos inusuales de los equipos.
La evolucin del lenguaje mquina fue el lenguaje ensamblador. Es tambin un
lenguaje de bajo nivel, al igual que el lenguaje mquina, ya que dependen
directamente del hardware donde son ejecutados. Pero las instrucciones que
describen una operacin elemental del procesador, se sustituyen por palabras
especiales, en lugar de largas secuencias de ceros y unos.
Caractersticas del lenguaje ensamblador

Programar en lenguaje ensamblador es difcil de aprender,


entender, leer, escribir, depurar y mantener, por eso surgi la
necesidad de los lenguajes compilados.

A pesar de perder rendimiento en un proceso de compilacin, en la


actualidad la mayora de las computadoras son suficientemente
rpidas.

El lenguaje ensamblador no es portable.

Programar en lenguaje ensamblador lleva mucho tiempo.

Los

programas

hechos

en

lenguaje

ensamblador

son

generalmente ms rpidos. Al programar cuidadosamente en


lenguaje ensamblador se pueden crear programas de 5 a 100
veces ms rpidos que con lenguajes de alto nivel.

Los programas hechos en lenguaje ensamblador generalmente


ocupan menos espacio. Un buen programa en lenguaje
5

ensamblador puede ocupar casi la mitad de espacio que su


contrapartida en lenguaje de alto nivel.

Con el lenguaje ensamblador se pueden crear segmentos de


cdigo imposibles de formar en un lenguaje de alto nivel.

4.3 Lenguaje mquina.


El lenguaje de mquina est orientado hacia la mquina que est constituida por
varios arreglos de "bits". Este lenguaje es fcil de entender por la computadora,
pero difcil para el usuario. Es el lenguaje original de la computadora el cual es
generado por el "software", y no por el programador. Es por esto que el lenguaje
mquina slo es entendible por las computadoras. Se basa en una lgica binaria
de 0 y 1, generalmente implementada por mecanismos elctricos.

En general el lenguaje mquina es difcil de entender para los humanos por este
motivo hacemos uso de lenguajes ms parecidos a los lenguajes naturales.

Caractersticas
El lenguaje mquina realiza un conjunto de operaciones predeterminadas
llamadas micro operaciones.
Las micro operaciones slo realizan operaciones del tipo aritmtica (+,-,*, /),
lgicas (AND,
OR, NOT) y de control (secuencial, decisin, repetitiva).
El lenguaje mquina es dependiente del tipo de arquitectura. As un programa
mquina para una arquitectura Intel x86 no se ejecutar en una arquitectura
Power PC de IBM (al menos de manera nativa).
Algunos microprocesadores implementan ms funcionalidades llamado CISC,
pero son ms lentos que los RISC ya que estos tienen registros ms grandes.

4.4 Administracin de memoria.


Consiste en determinar la posicin de memoria en la que los diferentes smbolos
del programa almacenan la informacin
Depende de la estrategia utilizada para la gestin de memoria, el mecanismo
puede variar.
6

La administracin de la memoria es un proceso hoy en da muy importante, de


tal modo que su mal o buen uso tiene una accin directa sobre el desempeo de
memoria.
En general un ensamblador tiene un administrador de memoria ms limitado que
un compilador.
En la mayora de los lenguajes de programacin el uso de punteros no estaba
vigilado por lo que se tienen muchos problemas con el uso de memoria. Los
lenguajes ms recientes controlan el uso de punteros y tienen un programa
denominado recolector de basura que se encarga de limpiar la memoria no
utilizada mejorando el desempeo.
Para poder lograr una buena administracin, la operacin principal que realiza
es la de trasladar la informacin que deber ser ejecutada por el procesador, a
la memoria principal. Actualmente esta administracin se conoce como Memoria
Virtual ya que no es la memoria fsica del procesador sino una memoria virtual
que la representa. Entre algunas ventajas, esta memoria permite que el sistema
cuente con una memoria ms extensa teniendo la misma memoria real, con lo
que esta se puede utilizar de manera ms eficiente. Y por supuesto, que los
programas que son utilizados no ocupen lugar innecesario.
Las tcnicas que existen para la carga de programas en la memoria son:
particin fija, que es la divisin de la memoria libre en varias partes (de igual o
distinto tamao) y la particin dinmica, que son las particiones de la memoria
en tamaos que pueden ser variables, segn la cantidad de memoria que
necesita cada proceso.
Entre las principales operaciones que desarrolla la administracin de memoria
se encuentran la reubicacin, que consiste en trasladar procesos activos dentro
y fuera de la memoria principal para maximizar la utilizacin del procesador; la
proteccin, mecanismos que protegen los procesos que se ejecutan de
interferencias de otros procesos; uso compartido de cdigos y datos, con lo que
el mecanismo de proteccin permite que ciertos procesos de un mismo programa
que comparten una tarea tengan memoria en comn.

BIBLIOGRAFIA
Libro: Compiladores Principios, tcnicas y herramientas
Segunda Edicin
Autores: Afred V. Aho, Monica S. Lam, Ravi Sethi Jeffrey D. Ullman
Libro: Compiladores principios, tcnicas y herramientas. Sptima Edicin.
Autores: Alfred V. Aho. Ravi Sethi. Jeffrey D. Ullaman.
Editorial: Pearson (Addission Wesley.)

You might also like