Codigo Final

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 17

UNIVERSIDAD NACIONAL SANTIAGO ANTNEZ DE MAYOLO

FACULTAD DE CIENCIAS

Escuela Profesional de Ingeniera de Sistemas e Informtica

CODIGO FINAL

DOCENTE: CURSO: CICLO: INTEGRANTES:

ING.SILVA ZAPATA MIGUEL ANGEL TEORIA DE LENGUAJES VII

CHAVEZ TORRES, Cristian FIGUEROA VILLANUEVA, Juan


IBARRA VILLAFAN, Mack ROSAS CAMPOS, Eric

HUARAZ 2012

INDICE: I. II. 2.1.

Pag.

Introduccin.....03 Cdigo Final......04 GeneracinCdigo Objeto o Final...04

2.2. Cdigo Objeto o Final......06 2.3. 2.4. III. IV. Partes de Ejecucin del Cdigo Objeto...10 Tipos de Arquitecturas Fsicas......13 Conclusiones...16 Bibliografa17

I. INTRODUCCION

Los compiladores son programas muy importantes para el desarrollo de nuevas aplicaciones cada da, pues gracias a ellos los lenguajes de programacin de alto nivel con los cuales se desarrollan las muchas aplicaciones que nosotros utilizamos, son posibles de lograr, y entendidos por el hardware, es decir por la parte fsica.

En este informe tratamos especficamente del Cdigo Final, el cual es la salida del compilador, luego de que el cdigo fuente haya pasado por todos los subprogramas de compilacin como son el Anlisis Lxico, Anlisis Sinttico, Anlisis Semntico, La Generacin de Cdigo Intermedio, la Optimizacin del Cdigo Intermedio que finalmente nos da el cdigo final, cdigo que ejecuta el programa bien directamente, o bien pasndolo a cdigo ensamblador. Tambin se abordar sobre las estructuras fsicas que ejecutan las instrucciones del cdigo objeto, para poder comprender un poco ms sobre la interaccin del compilador con la mquina.

El conocimiento del funcionamiento de un compilador,y el conocimiento de un lenguaje objeto o final ayuda a cualquier profesional en el mbito de programacin a ampliar sus horizontes y a conocer ms pues logra entender el sentido y la forma de ejecucin del lenguaje de programacin con el que trabaja

II.

CODIGO FINAL

2.1. GENERACION DEL CODIGO FINAL O CODIGO OBJETO: La fase de generacin de cdigo final tiene por objeto traducir la secuencia de instrucciones de cdigo intermedio en una coleccin de instrucciones ejecutables y direccionables, aunque tambin puede ser generado directamente del anlisis semntico, con lo cual la generacin de cdigo intermedio y la optimizacin de cdigo no se realizan. Esta generacin de cdigo se da para una arquitectura fsica especfica. Las condiciones arquitectnicas del entorno de ejecucin van acondicionar considerablemente este proceso de compilacin. Esta fase recibe a la entrada un programa en un lenguaje intermedio (cdigo de pila, de tres direcciones, estructurado como rbol, etc.) y emite cdigo de mquina para una mquina objetivo (cdigo objeto). La generacin de cdigo mquina con el correspondiente optimizador forma el back end del compilador. Debe escribirse un back end para cada mquina para la que deseamos generar cdigo. Usualmente, el cdigo de entrada ya ha sufrido una primera fase de optimizacin que permite eliminar cierta redundancia del cdigo, aprovechar mejor el espacio (eliminando las variables temporales que no se necesitan), entre otras mejoras posibles. En esta fase el cdigo generado es llamado cdigo objeto. Ejemplo:

a:=b+c LOAD B ADD C STORE A

Proceso de Traduccin de Cdigo Intermedio a Cdigo Mquina: El proceso de traduccin directo es relativamente sencillo. Cada instruccin del cdigo intermedio puede traducirse por una secuencia de instrucciones de mquina. As las instrucciones:

r1:= &FP[-3] r2:= &FP[-2] r1:= r1+r2 &FP[-1]:= r1

Existen lenguajes pseudointerpretados que utilizan cdigo intermedio como el lenguaje java que tiene por ejemplo la extensin .class. Utilizando los bytecodes que son interpretados por una maquina virtual (en este caso JavaVirtualMachine). Ahora estudiaremos ms a fondo el cdigo final o cdigo objeto:

2.1. CODIGO FINAL O CODIGO OBJETO: El cdigo objeto generado por un compilador puede ser de 3 distintas maneras. 2.1.1.- Lenguaje Mquina o Cdigo Ensamblador.- Crea instrucciones simblicas para ser ejecutadas por medio del ensamblador para ejecutar las instrucciones del programa, pues este es el lenguaje que la mquina reconoce, tiene la extensin .ASM. 2.1.2.- Lenguaje de Mquina Relocalizable.- Permite compilar por separado los subprogramas del programa, siendo un sistema flexible, el cual es el ms comn en la mayora de compiladores comerciales, funciona separando el programa en mdulos objetos que se pueden enlazar y cargar para su ejecucin en el momento que son invocados mediante un cargador enlazador. Tiene la extensin .OBJ 2.1.3.- Lenguaje de Mquina Absoluto.- Se coloca en una posicin fija de la memoria y se ejecuta inmediatamente, el cual es muy eficiente pero no es flexible. Tiene la extensin .EXE

Ventajas del Lenguaje Ensamblador: Simplifica la generacin de cdigo debido al uso de instrucciones simblicas y nombres simblicos. Capa de abstraccin lgica. Las arquitecturas pueden ser descritas por un lenguaje ensamblador, Podemos modificar la implementacin. Desventajas Proceso adicional de ensamblaje y linking Linker.- Ver todos los archivos objetopara encontrar smbolos no resueltos, ejecutar los smbolos y encontrar las partes necesarias en las libreras disponibles en una sola imagen de memoria, resolver todos los nombres simblicos a las direcciones correctas de memoria y salidas adecuadas.

Ejemplos de Cdigo Final: Ejemplo programa que suma 4 nmeros enteros en lenguaje ensamblador

Ejemplo traduccin de if/then/else a ensamblador

Ejemplo traductor de un bucle while a ensamblador

Ejemplo traduccin de un switch a ensamblador

Ejemplo traductor de un bucle for a ensamblador

2.2. PARTES DE EJECUCION DEL CODIGO OBJETO: 2.2.1.- Administracin de Memoria. Esto se refiere a seleccionar la correspondencia entre los nombres del programa y las direcciones de objetos de datos en la memoria, en esta fase las entradas de la tabla de smbolos se van creando conforme se examina las declaraciones de un procedimiento o mtodo, el tipo de una declaracin determina la cantidad de memoria que necesaria para el nombre declarado. Modos de Direccionamiento: 2.2.1.1.- Direccionamiento Inmediato.- El direccionamiento inmediato es aquel en el que el operando forma parte la propia instruccin de cdigo ejecutable. Se expresa ante poniendo # al valor del operando. Ejemplo: ADD R1 #3 2.2.1.2.- Direccionamiento Directo al Registro.- El direccionamiento directo al registro permite direccionar un valor que est almacenado en uno de los registros del entorno de ejecucin del objetivo. Ejemplo: ADD R1 3 2.2.1.3.- Direccionamiento Directo a la Memoria.- El direccionamiento inmediato a la memoria opera con un valor almacenado en una direccin absoluta de memoria. Se utiliza / para representarlo. Ejemplo: ADD R1 /1000 2.2.1.4.- Direccionamiento Indirecto.- El direccionamiento indirecto opera con el valor almacenado en la direccin de memoria apuntada en el registro dado. Se pone entre [] el nombre del registro. Ejemplo:

ADD R1 [R3] 2.2.1.5.- Direccionamiento Relativo al Registro.- El direccionamiento relativo al registro permite expresar una direccin de desplazamiento sobre la base del valor de memoria en un registro. Ejemplo: ADD R1 #3[SP] 2.2.1.6.- Direccionamiento Relativo al Contador del Programa.- Utilizado en las instrucciones de salto, este direccionamiento expresa un direccionamiento relativo al registro contador del programa. Se usa $ y se omite el registro. Ejemplo: BR $3 2..2.2.- Seleccin de Instrucciones. Todas las instrucciones deben ser uniformes y completas, es un factor importante para la velocidad de la ejecucin de las instrucciones; la eficiencia del programa objeto se debe a la seleccin correcta de instrucciones a realizar. En particular, muchos lenguajes de mquina tienen instrucciones especializadas que permiten ahorrar espacio, accesos a memoria y/o una ejecucin ms eficiente. 2.2.3.- Asignacin de Registros. Segn las instrucciones que enva el compilador, existen algunas que operan en el registro, las cuales son ms rpidas que las que operan en la memoria, para lo cual se debe hacer un uso adecuado de los registros. La asignacin de registros se realiza en 2 subprogramas: En el primer subprograma, se selecciona el conjunto de variables que residir en los registros en un momento del programa En el subprograma siguiente, se escoge el registro especfico en el que residir una variable

2.2.4.- Eleccin del Orden de Evaluacin. En esta parte se elige el orden en el cual se realizarn los clculos a ejecutar, dependiendo del orden que los ejecute variar la eficiencia del cdigo objeto, pues algunos ordenamientos de clculos necesitan menos registros que otros para guardar resultados intermedios y finales.

2.3. TIPOS DE ARQUITECTURAS FISICAS: El tipo de arquitectura del entorno de ejecucin para el cual se est generando el cdigo final condiciona directamente la anatoma del mismo. En efecto, los recursos de la mquina suelen condicionarla estructura y prestaciones del juego de instrucciones con lo que la traduccin puede ser muy diferente de una mquina a otra. 2.3.1.- Mquinas a Pila.- Las mquinas a pila disponen de una pila de operandos donde realizan todas las operaciones propias de la unidad aritmticolgica. Para operar una operacin aritmtica, por ejemplo, primero se meten los operandos en la pila uno o dos segn sea unaria o binaria la operaciny despus se aplica el operador que extrae de la pila el nmero de operandos que requiere e inserta el resultado en la cima.

2.3.2.- Mquinas con registro acumulador.- Las mquinas con registro acumulador disponen, a parte de otros recursos, de un registro especial llamado registro acumulador contra el que se realizan todas las operaciones de la unidad aritmtico lgica. Cuando se desea hacer una operacin binaria uno de los datos aparece como operando de la operacin mientras que el otro se carga en el acumulador y funciona como operando implcito.

2.3.3.- Mquinas con Cdigo de Terceros.- En las mquinas con cdigo de terceros las operaciones de las instrucciones disponen a lo sumo de dos operandos sobre los cuales realizar la operacin. Frecuentemente el primero de ellos se utiliza como argumento de entrada y salida donde se almacena el resultado final. Si no se quieren perder los resultados de los operandos hay que guardar previamente los datos.

2.3.4.- Mquinas con Cdigo de Cuartetos.- Es poco frecuente encontrar mquinas con instrucciones basados en cuartetos. No obstante es necesario estudiarlas. En las mquinas de cuartetos las cuadruplas de cdigo intermedio tienen una traduccin directa a las instrucciones de la arquitectura final. Esto simplifica considerablemente el proceso.

III.

CONCLUCIONES:

La generacin del cdigo final o generacin del cdigo objeto es el proceso final de la compilacin, esta consiste en llevar el cdigo intermedio a cdigo maquina.

La generacin de cdigo final es un proceso sencillo de traduccin de un cdigo intermedio a un cdigo mquina final, el cual realiza la traduccin de instrucciones por bloques de cdigo. El lenguaje Mquina obtenido depender de la mquina con que se trabaje, pueda ser de ejemplo Intel, Motorola, etc.Por ende el compilador est orientado a tener su salida de acuerdo a la mquina en que trabaje. Los lenguajes interpretados como java, envan su cdigo intermedio a una maquina independiente que ejecutar el programa, en caso de java la JavaVirtualMachine. Eso quiere decir que no trabaja con la mquina fsica, con la ventaja de la portabilidad.

IV. BIBLIOGRAFIA: -Construccin de Compiladores: Principios y Prctica Kenneth C. Louden International thomsom Editores, 2004 ISBN 970-686-900-4 -Compiladores: Principios, tcnicas y herramientas. Aho, Lam, Sethi, ullman, Adison-Segunda Edicin mexico 2008 -Diseo de compiladores. A. Garrido, J. Iesta, F. Moreno y J. Prez. 2002. Edita Universidad de Alicante. -Cuadernos Didcticos Conceptos bsicos de Procesadores de lenguajeCuaderno N 10 Juan Manuel Cueva LovelleArea de Lenguajes y sistemas de informacin Universidad de Oviedo Diciembre de 1998 Francisco Jos Ribadas pena 22 de mayo de 2009

-Procesadores de lenguajes

También podría gustarte