Вы находитесь на странице: 1из 13

INSTITUTO TECNOLGICO SUPERIOR

DE COATZACOALCOS

MATERIA: LENGUAJES Y AUTOMATAS II

NOMBRE DE LA PROFESORA: ARTURO IVAN GRAJALES VZQUEZ.

NOMBRE DE ALUMNO: DAVID ABISAI ZURITA SANTIAGO

NO. DE CONTROL: 14080362

TEMA: UNIDAD III GENERACION DE CODIGO OBJETO

SEMESTRE: 7

GRUPO: B

29 de octubre de 2014

INTRODUCION
Una de las etapas muy importante es la generacin de cdigo intermedio pues sin esta no
sera posibles la realizacin del cdigo objeto.
El cdigo objeto recibe como entrada el cdigo intermedio y se podra decir que es la
penltima etapa. En otras palabras el cdigo objeto es el resultado de la compilacin del
cdigo fuente. Y es importante conocer los temas relacionados a la generacin de este
cdigo, los temas que se deben conocer son:
Los registros son los lugares en donde el procesador hace todas sus operaciones y solo
puede procesar datos que se encuentre hay, una de las ventajas de usar registros es la
velocidad con las que se ejecutan las operaciones que son muy superiores a la obtenida
en la memoria RAM.
Lenguaje maquina solo es comprendido por la computadora y utiliza solo dgitos unos y
ceros, con ella es capaz de representar cada una de sus operaciones y esto se realiza
solo por dispositivos electrnicos. Y a sus operaciones se les conoce como microoperaciones. La compilacin de los cdigos fuentes da como resultado cdigo que solo
est representado en cdigo mquina.
Lenguaje ensamblador como ya se ha visto en otros temas el lenguaje ensamblador es un
lenguaje de bajo nivel para computadoras microprocesadores y otros dispositivos
electrnicos.
Adems de esto se debe hacer un buen uso de la memoria disponible y as poder tener
espacio suficiente para poder realizar un gran nmero de operaciones sin que el sistema
colapse a esto se la llama administracin de memoria.

INDICE
4 GENERACIN DE CDIGO OBJETO.------------------------------------------ Pgina 1
4.1 REGISTROS. ----------------------------------------------------------- Pgina 1
4.2 LENGUAJE ENSAMBLADOR. ------------------------------------ Pgina 2
4.3 LENGUAJE MAQUINA. --------------------------------------------- Pgina 3
4.4 ADMINISTRACIN DE MEMORIA. ------------------------------ Pgina 4
CONCLUSION Y BIBLIOGRAFIA -------------------------------------------------- Pgina 6

4 GENERACIN DE CDIGO OBJETO


El generador de cdigo objeto transforma el cdigo intermedio optimizado en cdigo
objeto de bajo nivel. Toma cdigo intermedio y genera cdigo objeto para la mquina
considerada Es la parte ms prxima a la arquitectura de la mquina. Habitualmente, se
escriben a mano y es desarrollo a medida para cada mquina especfica.

En el modelo de anlisis y sntesis de un compilador, la etapa inicial traduce un programa


fuente a una representacin intermedia a partir de la cual la etapa final genera el cdigo
objeto. Los detalles del lenguaje objeto se confinan en la etapa final.

4.1 REGISTROS
Los registros del procesador se emplean para controlar instrucciones en ejecucin,
manejar direccionamiento de memoria y proporcionar capacidad aritmtica. Los 5registros
son espacios fsicos dentro del microprocesador con capacidad de 4 bits hasta 64 bits
dependiendo del microprocesador que se emplee.
Los registros son direccionables por medio de una vieta, que es una direccin de
memoria. Los bits, por conveniencia, se numeran de derecha a izquierda (15, 14,13. 3, 2,
1,0), los registros estn divididos en seis grupos los cuales tienen un fin especfico. Los
registros se dividen en:

Registros de segmento

Registros de apuntadores de instrucciones

Registros apuntadores

Registros de propsitos generales

Registro ndice

Registro de bandera.

Nota! Registro es una memoria de alta velocidad y poca capacidad, integrada en el


microprocesador

4.2. LENGUAJE ENSAMBLADOR


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.
Se incurren en menos errores y los que se cometen son ms fciles de localizar. Adems,
los programas en lenguaje ensamblador son ms fciles de modificar que los programas
en lenguaje de mquina.
Convierte el cdigo fuente escrito en el lenguaje ensamblador a cdigo objeto que luego
ser enlazado para producir lenguaje de mquina. Vemoslo ms a detalle.
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.
Ensambladores, Un ensamblador crea cdigo objeto traduciendo instrucciones
mnemnicas a cdigos operativos, e interpretando los nombres simblicos para
direcciones de memoria y otras entidades. El uso de referencias simblicas es una
caracterstica bsica de los ensambladores, evitando tediosos clculos y direccionamiento
manual despus de cada modificacin del programa. La mayora de los ensambladores
tambin incluyen facilidades para crear macros, a fin de generar series de instrucciones
cortas que se ejecutan en tiempo real, en lugar de utilizar subrutinas. Los ensambladores
son por lo general ms fciles de programar que los compiladores de lenguajes de alto
nivel, y han estado disponibles desde la dcada de 1950.
Un programa escrito en lenguaje ensamblador consiste en una serie de instrucciones que
corresponden al flujo de rdenes ejecutables que pueden ser cargadas en la memoria de
una computadora. Por ejemplo, un procesador x86 puede ejecutar la siguiente instruccin
binaria como se expresa en cdigo maquina:
Binario: 10110000 01100001 (Hexadecimal: 0xb061) La representacin equivalente en
ensamblador es ms fcil de recordar:
mov al, 061h Esta instruccin significa:
Mueva el valor hexadecimal 61 (97 decimal) al registro al. El mnemnico mov es un
cdigo de operacin u opcode , elegido por los diseadores de la coleccin de
Nota! En informtica, un mnemnico es una palabra que sustituye a un cdigo de operacin (lenguaje de
mquina), con lo cual resulta ms fcil la programacin, es de aqu de donde se aplica el concepto
de lenguaje ensamblador.

2
instrucciones para abreviar move (mover).- El opcode es seguido por una lista de
argumentos o parmetros, completando una instruccin de ensamblador tpica. La
transformacin del lenguaje ensamblador en cdigo mquina la realiza un programa
ensamblador, y la traduccin inversa la puede efectuar un desensamblador. A diferencia
de los lenguajes de alto nivel, aqu hay usualmente una correspondencia 1 a 1 entre las
instruc

Nota! En informtica, un mnemnico es una palabra que sustituye a un cdigo de operacin (lenguaje de
mquina), con lo cual resulta ms fcil la programacin, es de aqu de donde se aplica el concepto
de lenguaje ensamblador.

3
ciones simples del ensamblador y el lenguaje mquina. Sin embargo, en algunos casos,
un ensamblador puede proveer pseudo instrucciones que se expanden en un cdigo de
mquina ms extenso a fin de proveer la funcionalidad necesaria. Por ejemplo, para un
cdigo mquina condicional como si X mayor o igual que , un ensamblador puede utilizar
una pseudo instruccin al grupo haga si menor que , y si = 0 sobre el resultado de la
condicin anterior. Los ensambladores ms completos tambin proveen un rico lenguaje
de macros que se utiliza para generar cdigo ms complejo y secuencias de datos.
Cada arquitectura de computadoras tiene su propio lenguaje de mquina, y en
consecuencia su propio lenguaje ensamblador. Los ordenadores difieren en el tipo y
nmero de operaciones que soportan; tambin pueden tener diferente cantidad de
registros, y distinta representacin de los tipos de datos en memoria. Aunque la mayora
de las computadoras son capaces de cumplir esencialmente las mismas funciones, la
forma en que lo hacen difiere, y los respectivos lenguajes ensamblador reflejan tal
diferencia.
Pueden existir mltiples conjuntos de mnemnicos o sintaxis de ensamblador para un
mismo conjunto de instrucciones, instanciados tpicamente en diferentes programas
ensamblador. En estos casos, la alternativa ms popular es la provista por los fabricantes,
y usada en los manuales del programa.
Adems, el lenguaje ensamblador est demasiado ligado al microprocesador para que
sea posible escribir programas independientes de la mquina en que van a ejecutarse.
Este cdigo simblico no puede ser ejecutado directamente por un ordenador, por lo que
es preciso traducirlo previamente. Pero la traduccin es un proceso mecnico y repetitivo,
que se presta a su realizacin por un programa de ordenador.
Los programas que traducen cdigo simblico al lenguaje de mquina se llaman
ensambladores (assembler, en ingls), porque son capaces de ensamblar el programa
traducido a partir de varias piezas, procedimientos o subrutinas a cdigo binario (1 y 0)
que entiende el procesador.
4.3 LENGUAJE MQUINA
Son los lenguajes de ms bajo nivel: secuencias binarias de ceros y unos. Se denomina
lenguaje mquina a la serie de datos que la parte fsica de la computadora o hardware, es
capaz de interpretar.
El lenguaje mquina fue el primero que empleo el hombre para la programacin delas
primeras computadoras. Una instruccin en lenguaje mquina puede representarse de la
siguiente forma: 011011001010010011110110. Esta secuencia es fcilmente ejecutada por
la computadora, pero es de difcil interpretacin, siendo an ms difcil la interpretacin de
un programa (conjunto de instrucciones) escrito de esta forma. Esta dificultad hace que
los errores sean frecuentes y la correccin de los mismos costosa, cuando no imposible,
al igual que la verificacin y modificacin de los programas.

Traduccin de la representacin intermedia a cdigo objeto (Normalmente


ensamblador).

Hay que tener en cuenta la arquitectura de la mquina para realizar una gestin
eficiente de la memoria y de los registros.

Nota! Fue el primer lenguaje utilizado en la programacin para las primeras computadoras, pero
dej de utilizarse por su dificultad y complicacin, siendo sustituido por otros lenguajes ms fciles
de aprender y utilizar, y que adems reducen la posibilidad de cometer errores.

Primero se generan las directivas para reservar memoria para las variables y
datos.

Nota! Fue el primer lenguaje utilizado en la programacin para las primeras computadoras, pero
dej de utilizarse por su dificultad y complicacin, siendo sustituido por otros lenguajes ms fciles
de aprender y utilizar, y que adems reducen la posibilidad de cometer errores.

Luego se genera el resto del cdigo. Por ejemplo, los rboles de sintaxis abstracta
se recorren.

para generar cdigo directamente:


o
o
o
o
o

Hay que tener en cuenta:


Los lenguajes fuente y objeto
Gestin de memoria y registros
Juego de instrucciones
Orden de evaluacin

4.4 ADMINISTRACIN DE MEMORIA.


La memoria principal puede ser considerada como un arreglo lineal de localidades de
almacenamiento de un byte de tamao. Cada localidad de almacenamiento tiene
asignada una direccin que la identifica.
POLITICAS Y FILOSOFIA DE LA ADMINISTRACION DE LA MEMORIA.
La memoria principal es el lugar donde el CPU lee las instrucciones a ejecutar, asncrono
algunos datos a emplear. Una de las funciones bsicas que debe implementar un SO es
la administracin de la Memoria para tener un control sobre los lugares donde estn
almacenados los procesos y datos que actualmente se estn utilizando. Se distinguen los
siguientes propsitos del sistema de administracin de memoria:
Proteccin.
Si varios programas comparten la memoria principal, se debera asegurar que el
programa no sea capaz de cambiar las ubicaciones no pertenecientes a l. Aunque una
accin de escritura puede tener efectos ms graves que una de lectura, esta ltima
tampoco debera estar permitida, para proporcionar algo de privacidad al programa.
Compartimiento.
Este objetivo parece contradecir al anterior, sin embargo a veces es necesario para los
usuarios poder compartir y actualizar informacin (por ejemplo, en una base de datos) y,
si se organiza la tarea de entrada a la misma, se puede evitar el tener varias copias de la
rutina.
Reubicacin.
La tcnica de multiprogramacin requiere que varios programas ocupen la memoria al
mismo tiempo. Sin embargo no se sabe con anticipacin donde ser cargado cada
programa por lo que no es prctico usar direccionamiento absoluto de memoria.
Organizacin fsica.
Debido al costo de una memoria principal rpida, sta se usa en conjunto con una
memoria secundaria mucho ms lenta (y por consiguiente, barata) a fines de extender su
capacidad.
Dato! La memoria virtual es una tcnica de gestin de la memoria que permite que el sistema
operativo disponga, tanto para el software de usuario como para s mismo, de mayor cantidad
de memoria que est disponible fsicamente.

Dato! La memoria virtual es una tcnica de gestin de la memoria que permite que el sistema

operativo disponga, tanto para el software de usuario como para s mismo, de mayor cantidad
de memoria que est disponible fsicamente.

Organizacin lgica.
Aunque la mayor parte de las memorias son organizadas linealmente con un
direccionamiento secuencial, esto difcilmente concuerde con el camino seguido por el
programa, debido al uso de procedimientos, funciones, subrutinas, arreglos, etc.

MECANISMOS DE ASIGNACION.
Un mecanismo de asignacin determina la cantidad de bloques (particiones) que sern
administrados en la memoria.
1. ASIGNACIN DE UNA PARTICIN. En la memoria se considera la existencia de una
sola particin, esto es, se tiene la capacidad de ejecutar un proceso. La particin es toda
la memoria, cuya administracin corre por cuenta del usuario, o sea, no hay un sistema
operativo.
2. ASIGNACIN DE DOS PARTICIONES. La memoria se divide en 2 bloques. En una
particin se carga el Sistema Operativo y en la otra el programa del usuario. Es el
concepto de Sistema Operativo Monousuario.
3. ASIGNACIN DE MULTIPLES PARTICIONES. La memoria es dividida en varias
particiones una para el Sistema Operativo y las dems para los procesos de usuarios u
otras funciones especiales del Sistema Operativo.

CONCLUSIN
Habiendo concluido el anlisis de los temas podemos decir que el cdigo objeto no sera
posible sin la existencia del lenguaje ensamblador y la correcta interpretacin del lenguaje
maquina as es cmo podemos hacer que la computadora lleve a cabo nuestras
instrucciones de manera que no se cambie la forma lgica de resolver problemas que
nosotros codificamos para que se lleven a cabo bajo las condiciones y limitaciones de una
maquina sacando el mximo provecho a estos limitados recursos como son la memoria, el
microprocesador y sus registros.
En todo caso el lenguaje ensamblador nos ayuda a que nuestro cdigo intermedio se
convierto en cdigo objeto en lenguaje mquina que solo el procesador y sus recursos
pueden ejecutar.
Una de las cosas que ms debemos tener en cuenta es obtener resultados lo ms rpido
posibles utilizando menos recursos y sin afectar toda nuestra lgica.

BIBLIOGRAFIA
https://es.scribd.com/doc/58266678/Unidad-8-Generacion-de-Codigo-Objeto
Compiladores e intrpretes: un enfoque pragmtico
AhoA., Sethi R. and Ullman J. Compiladores. Principios, tcnicas y herramientas.

Вам также может понравиться