Optimizacion de Codigo Intermedio Reducir operaciones Reducir codigo Eliminar codigo que no se necesita Cambiar el orden del codigo para mejorar el rendimiento Disminuir el uso de variables 1
Generacion de Codigo Final Genera la salida Cuando es un compilador genera un archivo ejecutable Cuando es un interprete genera una instruccion ejecutable Caracteristicas de la salida Formato del archivo Encoding Tabla de Simbolos Almacena datos como variables y constantes, estos pueden ser: Nombre Tipo Alcance Valor Nombre temporal asociado Utilizacion Inicializacion Manejo de Errores La construcccion de un manejador de errores permite al desarrollador: 2
Mas informacion Localizacion Opciones de correccion Avanzar en el proceso en busqueda de mas errores Correccion automatica de errores
Pasadas Una pasada: Lee el programa fuente solo una vez. Multiples pasadas: Requiere varias lectiras del codigo para realizar la compilacion. Generalmente las lecturas de una sola pasada tienden a ser mas optimos que los de multiples pasadas, estos ultimos normalmente son utilizados por interpretes y menos por compiladores ya que tienen un costo elevado. Diferencias entre Compilador e Interprete
Compilador Tiene como salida un unico lenguaje objeto. El rendimiento en ejecucion del programa compilado (salida) es mas rapido que interpretado. La salida puede depender de la arquitectura. No requiere del programa fuente porque el programa objeto es portable,es decir el programa Fuente puede ser desconocido. Los errores sintacticos y semanticos se detectan antes de la ejecucion del programa objeto. Tienen menos exibilidad en el uso de memoria para el programa objeto.
Interprete Tiene como salida instrucciones tradicidas. El rendimiento se somete al rendimiento de realizar la traduccion una a una. Tiende a ser portable e independiente de la arquitectura. Se requieren del programa fuente para su ejecucion.
Taxonomia de los compialdores Cruzados: Utilizados para generar lenguaje objeto para una arquitectura distinta. Optimizadores: Relacionados a hacer codigo mas robusto, mejorando su eciencia. Una Pasada: Generan codigo objeto a partir de una unica lectura del codigo. Varias Pasadas: Deben hacer varias lecturas del codigo para generar codigo objeto. Jit (Just in time): Es un hibrido entre compilador e interprete. Esta mas realcionado a tener un compilador de secciones de codigo dentro de un interprete. Ensambladores: Utilizan nmomicos.