SlideShare a Scribd company logo
1 of 25
GENERADOR DE
CODIGO INTERMEDIO
ING. CHRISTIAN MARTINEZ
ANALISIS
SINTESIS
GENERALIDADES
■ Después de la etapa de análisis, se suele generar una representación intermedia
explícita del programa fuente. Dicha representación intermedia se puede considerar
como un programa para una máquina abstracta.
■ Se puede considerar esta representación intermedia como un programa para una
máquina abstracta.
■ Esta representación intermedia debe tener dos propiedades importantes; debe ser fácil
de producir y fácil de traducir al programa objeto.
■ En el proceso de traducir un programa fuente a código destino, un compilador puede
construir una o más representaciones intermedias, las cuales pueden tener una
variedad de formas.
■ La representación intermedia puede tener diversas formas. Los árboles sintácticos son
una forma de representación intermedia; por lo general, se utilizan durante el análisis
sintáctico y semántico.
■ Otra forma intermedia es la llamada “código de tres direcciones”, que es como el
lenguaje ensamblador para una máquina en la que cada posición de memoria puede
actuar como un registro.
FUNCIONAMIENTO
■ En lugar de generar código ensamblador directamente, los compiladores
generan un código intermedio que es más parecido al código ensamblador,
las operaciones por ejemplo nunca se hacen con más de dos operandos.
■ Al no generarse código ensamblador el cual es dependiente de la
computadora especifica, sino código intermedio, se puede reutilizar la parte
del compilador que genera código intermedio en otro compilador para una
computadora con diferente procesador cambiando solamente el generador
de código ensamblador al cual llamamos back-end, la desventaja
obviamente es la lentitud que esto conlleva.
■ El código intermedio no es el lenguaje de programación de ninguna
máquina real, sino que corresponde a una máquina abstracta, que se debe
de definir lo más general posible, de forma que sea posible traducir este
código intermedio a cualquier máquina real.
REPRESENTACION INTERMEDIA
■ Esta representación intermedia tiene varias propiedades.
– Primera, cada instrucción de tres direcciones tiene a lo
sumo un operador, además de la asignación. Por tanto,
cuando se generan esas instrucciones, el compilador tiene
que decidir el orden en que deben efectuarse las
operaciones.
– Segunda, el compilador debe generar un nombre temporal
para guardar los valores calculados por cada instrucción.
– Tercera, algunas instrucciones de ‘tres direcciones” tienen
TIPOS DE REPRESENTACION
INTERMEDIA
■ Códigos intermedios puede ser representado en una variedad de formas y
tienen sus propios beneficios.
■ Alto nivel IR - Alto nivel de representación de código intermedio está muy
cerca de la lengua de origen.
■ Pueden ser fácilmente generados desde el código fuente y podemos aplicar
fácilmente modificaciones de código para mejorar el rendimiento.
■ Pero para optimización de la máquina destino, es menos preferido.
■ Bajo Nivel IR - Este es cerca de la máquina de destino, lo que lo hace
adecuado para registro y asignación de memoria, un conjunto de
instrucciones selección, etc. es bueno para optimizaciones dependientes de
la máquina.
CÓDIGO FUENTE
CÓDIGO MAQUINA
REPRESENTACIÓN INTERMEDIA
JUSTIFICACION
■ El código fuente puede ser traducido en su código de la máquina destino,
entonces, ¿por qué hemos de traducir el código fuente en un código intermedio
que luego se traduce en su código de destino?
1. Si un compilador traduce el idioma de origen a su ordenador de destino sin
tener la opción de generar código intermedio, a continuación, en cada nueva
máquina, una nativa del compilador completo es necesario.
2. Código Intermedio elimina la necesidad de un nuevo compilador completo
para cada máquina de la sección de análisis mismo de todos los
compiladores.
3. La segunda parte del compilador, síntesis, se modifica de acuerdo a la
máquina de destino.
4. Es más fácil de aplicar las modificaciones del código fuente para mejorar
rendimiento del código mediante la aplicación de técnicas de optimización
código el código intermedio.
OBJETIVOS
■ El objetivo del código intermedio es reducir el número de programas
necesarios para construir traductores, y permitir más fácilmente la
transportabilidad de unas máquinas a otras.
■ Supóngase que se tienen n lenguajes, y se desea construir
traductores entre ellos.
■ Sería necesario construir n*(n-1) traductores. Sin embargo si se
construye un lenguaje intermedio, tan sólo son necesarios 2*n
traductores.
■ Así por ejemplo un fabricante de compiladores puede construir un
compilador para diferentes máquinas objeto con tan sólo cambiar
las dos últimas fases de la tarea de síntesis.
MAQUINA ABSTRACTA
■ La arquitectura de la máquina abstracta se elegirá de forma que
contribuya a facilitar la portabilidad dentro del grupo de
arquitecturas hacia las que previsiblemente se dirigirá el código
objeto.
■ Habitualmente las arquitecturas típicas de máquinas abstractas son:
– Máquinas basadas en pila,
– basadas en registros,
– combinación de pilas y registros,
– orientadas a objetos.
■ También se pueden clasificar desde el punto de vista de la cantidad y
complejidad de sus instrucciones en máquinas CISC (Complex
Instruction Set Computer)y RISC (Reduced Instruction Set Computer).
TIPOS DE REPRESENTACIONES
INTERMEDIAS
1. Notación polaca
2. Código P
3. Triplos
NOTACION POLACA
■ El lógico polaco Jan Łukasiewicz inventó esta notación alrededor de
1920 para simplificar la lógica proposicional.
■ La notación polaca, también conocida como notación de prefijo o
notación prefija, es una forma de notación para la lógica, la
aritmética, el álgebra y la computación.
■ Su característica distintiva es que coloca los operadores a la
izquierda de sus operandos.
■ Si la paridad de los operadores es fija, el resultado es una sintaxis
que carece de paréntesis u otros signos de agrupación, y todavía
puede ser analizada sin ambigüedad.
EJEMPLO
INFIJA
PREFIJA
POSTFIJA
CODIGO P
■ El código P comenzó como un código ensamblador objetivo estándar
producido por varios compiladores Pascal en la década de 1970 y
principios de la de 1980.
■ El código P hace referencia a máquinas que utilizan o se auxilian de
pilas para generar código objeto.
■ En muchos caso la P se asociado a código portable el cual garantiza
que el código compilado en una máquina se pueda ejecutar en otras.
■ También se recomienda la no utilización de carácterísticas
especiales exclusivas de alguna arquitectura de computadoras en
particular.
■ Este tipod e código es el utilizado por los interpretes par aguardar el
código fuente sintetizado para su posterior interpretación.
■ Cada Lenguaje interpretado maneja un código P distinto,
usualmente se suele hacer analogía entre PCODE y BYTECODE
EJEMPLO
TRIPLOS
■ Las proposiciones de tres direcciones se parece mucho al
ensamblador, el cual es un lenguaje intermedio más
entendible para la máquina.
■ Esta notación se puede implementar como registros con
campos para el operador y operadores.
■ Las estructuras de control (if, switch, while, do-while, for)
son realmente etiquetas goto disfrazadas.
EJEMPLO 0
■ (a * b + h) - j * k + 1
EJEMPLO 01
■ a + b * (c + d) * (f + k ) * d
EJEMPLO 02
a > b OR b < k + h AND f * b + d == z OR NOT
k>f

More Related Content

Similar to GENERADOR DE CODIGO INTERMEDIO - COMPILADORES.pptx

Arquitecturas de ordenadores y compiladores cruzados
Arquitecturas de ordenadores y compiladores cruzadosArquitecturas de ordenadores y compiladores cruzados
Arquitecturas de ordenadores y compiladores cruzadosDIEGO BAROJA
 
Compilador e interpretador
Compilador e interpretadorCompilador e interpretador
Compilador e interpretadorFrancisco Leal
 
Compiladores diapositivas
Compiladores diapositivasCompiladores diapositivas
Compiladores diapositivasjonathangrief
 
Lenguajes de programacion tema 2_compiladores e interpretes
Lenguajes de programacion tema 2_compiladores e interpretesLenguajes de programacion tema 2_compiladores e interpretes
Lenguajes de programacion tema 2_compiladores e interpretesIsrael Castillo Cruz
 
Lenguaje ensamblador
Lenguaje ensambladorLenguaje ensamblador
Lenguaje ensambladorjuan1993are
 
Lenguaje ensamblador
Lenguaje ensambladorLenguaje ensamblador
Lenguaje ensambladorjuan1993are
 
Como programar un pic
Como programar un pic  Como programar un pic
Como programar un pic oskarjgf
 
Programacion Lenguaje Assembler 25 10 07
Programacion Lenguaje Assembler 25 10 07Programacion Lenguaje Assembler 25 10 07
Programacion Lenguaje Assembler 25 10 07Carlos Pastorino
 
Clase10 2-lenguaje ensamblador
Clase10 2-lenguaje ensambladorClase10 2-lenguaje ensamblador
Clase10 2-lenguaje ensambladorInfomania pro
 
Lenguaje Ensamblador00
Lenguaje Ensamblador00Lenguaje Ensamblador00
Lenguaje Ensamblador00Car_00_01
 
Lenguaje ensamblador
Lenguaje ensambladorLenguaje ensamblador
Lenguaje ensambladorCar_00_01
 
Presentacion de lenguajes de programacion grado 9.2
Presentacion de lenguajes de programacion grado 9.2Presentacion de lenguajes de programacion grado 9.2
Presentacion de lenguajes de programacion grado 9.2danny7206
 
Actividad 3 programacion de sistemas
Actividad 3 programacion de sistemasActividad 3 programacion de sistemas
Actividad 3 programacion de sistemasJESSIKADG86
 
Traductores de lenguajes de programación
Traductores de lenguajes de programaciónTraductores de lenguajes de programación
Traductores de lenguajes de programaciónDaniela Brignolo
 

Similar to GENERADOR DE CODIGO INTERMEDIO - COMPILADORES.pptx (20)

Arquitecturas de ordenadores y compiladores cruzados
Arquitecturas de ordenadores y compiladores cruzadosArquitecturas de ordenadores y compiladores cruzados
Arquitecturas de ordenadores y compiladores cruzados
 
Compilador e interpretador
Compilador e interpretadorCompilador e interpretador
Compilador e interpretador
 
Compiladores diapositivas
Compiladores diapositivasCompiladores diapositivas
Compiladores diapositivas
 
Mipag web
Mipag webMipag web
Mipag web
 
Introduccion al assembler[1]
Introduccion al assembler[1]Introduccion al assembler[1]
Introduccion al assembler[1]
 
Introduccion al assembler
Introduccion al assemblerIntroduccion al assembler
Introduccion al assembler
 
Lenguajes de programacion tema 2_compiladores e interpretes
Lenguajes de programacion tema 2_compiladores e interpretesLenguajes de programacion tema 2_compiladores e interpretes
Lenguajes de programacion tema 2_compiladores e interpretes
 
Lenguaje ensamblador
Lenguaje ensambladorLenguaje ensamblador
Lenguaje ensamblador
 
Lenguaje ensamblador
Lenguaje ensambladorLenguaje ensamblador
Lenguaje ensamblador
 
Como programar un pic
Como programar un pic  Como programar un pic
Como programar un pic
 
Programacion Lenguaje Assembler 25 10 07
Programacion Lenguaje Assembler 25 10 07Programacion Lenguaje Assembler 25 10 07
Programacion Lenguaje Assembler 25 10 07
 
Clase10 2-lenguaje ensamblador
Clase10 2-lenguaje ensambladorClase10 2-lenguaje ensamblador
Clase10 2-lenguaje ensamblador
 
Evolución de la programación
Evolución de la programaciónEvolución de la programación
Evolución de la programación
 
Lenguaje Ensamblador00
Lenguaje Ensamblador00Lenguaje Ensamblador00
Lenguaje Ensamblador00
 
Lenguaje ensamblador
Lenguaje ensambladorLenguaje ensamblador
Lenguaje ensamblador
 
Presentacion de lenguajes de programacion grado 9.2
Presentacion de lenguajes de programacion grado 9.2Presentacion de lenguajes de programacion grado 9.2
Presentacion de lenguajes de programacion grado 9.2
 
Universidad fermín toro
Universidad fermín toroUniversidad fermín toro
Universidad fermín toro
 
LENGUAJE ENSAMBLADOR
LENGUAJE ENSAMBLADORLENGUAJE ENSAMBLADOR
LENGUAJE ENSAMBLADOR
 
Actividad 3 programacion de sistemas
Actividad 3 programacion de sistemasActividad 3 programacion de sistemas
Actividad 3 programacion de sistemas
 
Traductores de lenguajes de programación
Traductores de lenguajes de programaciónTraductores de lenguajes de programación
Traductores de lenguajes de programación
 

Recently uploaded

CARGAS VIVAS Y CARGAS MUERTASEXPOCI.pptx
CARGAS VIVAS Y CARGAS MUERTASEXPOCI.pptxCARGAS VIVAS Y CARGAS MUERTASEXPOCI.pptx
CARGAS VIVAS Y CARGAS MUERTASEXPOCI.pptxvalenciaespinozadavi1
 
nomenclatura de equipo electrico en subestaciones
nomenclatura de equipo electrico en subestacionesnomenclatura de equipo electrico en subestaciones
nomenclatura de equipo electrico en subestacionesCarlosMeraz16
 
Quimica Raymond Chang 12va Edicion___pdf
Quimica Raymond Chang 12va Edicion___pdfQuimica Raymond Chang 12va Edicion___pdf
Quimica Raymond Chang 12va Edicion___pdfs7yl3dr4g0n01
 
PERFORACIÓN Y VOLADURA EN MINERÍA APLICADO
PERFORACIÓN Y VOLADURA EN MINERÍA APLICADOPERFORACIÓN Y VOLADURA EN MINERÍA APLICADO
PERFORACIÓN Y VOLADURA EN MINERÍA APLICADOFritz Rebaza Latoche
 
ARBOL DE CAUSAS ANA INVESTIGACION DE ACC.ppt
ARBOL DE CAUSAS ANA INVESTIGACION DE ACC.pptARBOL DE CAUSAS ANA INVESTIGACION DE ACC.ppt
ARBOL DE CAUSAS ANA INVESTIGACION DE ACC.pptMarianoSanchez70
 
Procesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptx
Procesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptxProcesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptx
Procesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptxJuanPablo452634
 
PostgreSQL on Kubernetes Using GitOps and ArgoCD
PostgreSQL on Kubernetes Using GitOps and ArgoCDPostgreSQL on Kubernetes Using GitOps and ArgoCD
PostgreSQL on Kubernetes Using GitOps and ArgoCDEdith Puclla
 
NTP- Determinación de Cloruros en suelos y agregados (1) (1).pptx
NTP- Determinación de Cloruros  en suelos y agregados (1) (1).pptxNTP- Determinación de Cloruros  en suelos y agregados (1) (1).pptx
NTP- Determinación de Cloruros en suelos y agregados (1) (1).pptxBRAYANJOSEPTSANJINEZ
 
Elaboración de la estructura del ADN y ARN en papel.pdf
Elaboración de la estructura del ADN y ARN en papel.pdfElaboración de la estructura del ADN y ARN en papel.pdf
Elaboración de la estructura del ADN y ARN en papel.pdfKEVINYOICIAQUINOSORI
 
clasificasion de vias arteriales , vias locales
clasificasion de vias arteriales , vias localesclasificasion de vias arteriales , vias locales
clasificasion de vias arteriales , vias localesMIGUELANGEL2658
 
Magnetismo y electromagnetismo principios
Magnetismo y electromagnetismo principiosMagnetismo y electromagnetismo principios
Magnetismo y electromagnetismo principiosMarceloQuisbert6
 
INTEGRALES TRIPLES CLASE TEORICA Y PRÁCTICA
INTEGRALES TRIPLES CLASE TEORICA Y PRÁCTICAINTEGRALES TRIPLES CLASE TEORICA Y PRÁCTICA
INTEGRALES TRIPLES CLASE TEORICA Y PRÁCTICAJOSLUISCALLATAENRIQU
 
Ejemplos de cadenas de Markov - Ejercicios
Ejemplos de cadenas de Markov - EjerciciosEjemplos de cadenas de Markov - Ejercicios
Ejemplos de cadenas de Markov - EjerciciosMARGARITAMARIAFERNAN1
 
DOCUMENTO PLAN DE RESPUESTA A EMERGENCIAS MINERAS
DOCUMENTO PLAN DE RESPUESTA A EMERGENCIAS MINERASDOCUMENTO PLAN DE RESPUESTA A EMERGENCIAS MINERAS
DOCUMENTO PLAN DE RESPUESTA A EMERGENCIAS MINERASPersonalJesusGranPod
 
04. Sistema de fuerzas equivalentes II - UCV 2024 II.pdf
04. Sistema de fuerzas equivalentes II - UCV 2024 II.pdf04. Sistema de fuerzas equivalentes II - UCV 2024 II.pdf
04. Sistema de fuerzas equivalentes II - UCV 2024 II.pdfCristhianZetaNima
 
MODIFICADO - CAPITULO II DISEÑO SISMORRESISTENTE DE VIGAS Y COLUMNAS.pdf
MODIFICADO - CAPITULO II DISEÑO SISMORRESISTENTE DE VIGAS Y COLUMNAS.pdfMODIFICADO - CAPITULO II DISEÑO SISMORRESISTENTE DE VIGAS Y COLUMNAS.pdf
MODIFICADO - CAPITULO II DISEÑO SISMORRESISTENTE DE VIGAS Y COLUMNAS.pdfvladimirpaucarmontes
 
Clase 7 MECÁNICA DE FLUIDOS 2 INGENIERIA CIVIL
Clase 7 MECÁNICA DE FLUIDOS 2 INGENIERIA CIVILClase 7 MECÁNICA DE FLUIDOS 2 INGENIERIA CIVIL
Clase 7 MECÁNICA DE FLUIDOS 2 INGENIERIA CIVILProblemSolved
 
ANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZ
ANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZ
ANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZgustavoiashalom
 
CLASe número 4 fotogrametria Y PARALAJE.pptx
CLASe número 4 fotogrametria Y PARALAJE.pptxCLASe número 4 fotogrametria Y PARALAJE.pptx
CLASe número 4 fotogrametria Y PARALAJE.pptxbingoscarlet
 
Sesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
Sesión 02 TIPOS DE VALORIZACIONES CURSO CersaSesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
Sesión 02 TIPOS DE VALORIZACIONES CURSO CersaXimenaFallaLecca1
 

Recently uploaded (20)

CARGAS VIVAS Y CARGAS MUERTASEXPOCI.pptx
CARGAS VIVAS Y CARGAS MUERTASEXPOCI.pptxCARGAS VIVAS Y CARGAS MUERTASEXPOCI.pptx
CARGAS VIVAS Y CARGAS MUERTASEXPOCI.pptx
 
nomenclatura de equipo electrico en subestaciones
nomenclatura de equipo electrico en subestacionesnomenclatura de equipo electrico en subestaciones
nomenclatura de equipo electrico en subestaciones
 
Quimica Raymond Chang 12va Edicion___pdf
Quimica Raymond Chang 12va Edicion___pdfQuimica Raymond Chang 12va Edicion___pdf
Quimica Raymond Chang 12va Edicion___pdf
 
PERFORACIÓN Y VOLADURA EN MINERÍA APLICADO
PERFORACIÓN Y VOLADURA EN MINERÍA APLICADOPERFORACIÓN Y VOLADURA EN MINERÍA APLICADO
PERFORACIÓN Y VOLADURA EN MINERÍA APLICADO
 
ARBOL DE CAUSAS ANA INVESTIGACION DE ACC.ppt
ARBOL DE CAUSAS ANA INVESTIGACION DE ACC.pptARBOL DE CAUSAS ANA INVESTIGACION DE ACC.ppt
ARBOL DE CAUSAS ANA INVESTIGACION DE ACC.ppt
 
Procesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptx
Procesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptxProcesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptx
Procesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptx
 
PostgreSQL on Kubernetes Using GitOps and ArgoCD
PostgreSQL on Kubernetes Using GitOps and ArgoCDPostgreSQL on Kubernetes Using GitOps and ArgoCD
PostgreSQL on Kubernetes Using GitOps and ArgoCD
 
NTP- Determinación de Cloruros en suelos y agregados (1) (1).pptx
NTP- Determinación de Cloruros  en suelos y agregados (1) (1).pptxNTP- Determinación de Cloruros  en suelos y agregados (1) (1).pptx
NTP- Determinación de Cloruros en suelos y agregados (1) (1).pptx
 
Elaboración de la estructura del ADN y ARN en papel.pdf
Elaboración de la estructura del ADN y ARN en papel.pdfElaboración de la estructura del ADN y ARN en papel.pdf
Elaboración de la estructura del ADN y ARN en papel.pdf
 
clasificasion de vias arteriales , vias locales
clasificasion de vias arteriales , vias localesclasificasion de vias arteriales , vias locales
clasificasion de vias arteriales , vias locales
 
Magnetismo y electromagnetismo principios
Magnetismo y electromagnetismo principiosMagnetismo y electromagnetismo principios
Magnetismo y electromagnetismo principios
 
INTEGRALES TRIPLES CLASE TEORICA Y PRÁCTICA
INTEGRALES TRIPLES CLASE TEORICA Y PRÁCTICAINTEGRALES TRIPLES CLASE TEORICA Y PRÁCTICA
INTEGRALES TRIPLES CLASE TEORICA Y PRÁCTICA
 
Ejemplos de cadenas de Markov - Ejercicios
Ejemplos de cadenas de Markov - EjerciciosEjemplos de cadenas de Markov - Ejercicios
Ejemplos de cadenas de Markov - Ejercicios
 
DOCUMENTO PLAN DE RESPUESTA A EMERGENCIAS MINERAS
DOCUMENTO PLAN DE RESPUESTA A EMERGENCIAS MINERASDOCUMENTO PLAN DE RESPUESTA A EMERGENCIAS MINERAS
DOCUMENTO PLAN DE RESPUESTA A EMERGENCIAS MINERAS
 
04. Sistema de fuerzas equivalentes II - UCV 2024 II.pdf
04. Sistema de fuerzas equivalentes II - UCV 2024 II.pdf04. Sistema de fuerzas equivalentes II - UCV 2024 II.pdf
04. Sistema de fuerzas equivalentes II - UCV 2024 II.pdf
 
MODIFICADO - CAPITULO II DISEÑO SISMORRESISTENTE DE VIGAS Y COLUMNAS.pdf
MODIFICADO - CAPITULO II DISEÑO SISMORRESISTENTE DE VIGAS Y COLUMNAS.pdfMODIFICADO - CAPITULO II DISEÑO SISMORRESISTENTE DE VIGAS Y COLUMNAS.pdf
MODIFICADO - CAPITULO II DISEÑO SISMORRESISTENTE DE VIGAS Y COLUMNAS.pdf
 
Clase 7 MECÁNICA DE FLUIDOS 2 INGENIERIA CIVIL
Clase 7 MECÁNICA DE FLUIDOS 2 INGENIERIA CIVILClase 7 MECÁNICA DE FLUIDOS 2 INGENIERIA CIVIL
Clase 7 MECÁNICA DE FLUIDOS 2 INGENIERIA CIVIL
 
ANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZ
ANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZ
ANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZ
 
CLASe número 4 fotogrametria Y PARALAJE.pptx
CLASe número 4 fotogrametria Y PARALAJE.pptxCLASe número 4 fotogrametria Y PARALAJE.pptx
CLASe número 4 fotogrametria Y PARALAJE.pptx
 
Sesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
Sesión 02 TIPOS DE VALORIZACIONES CURSO CersaSesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
Sesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
 

GENERADOR DE CODIGO INTERMEDIO - COMPILADORES.pptx

  • 2.
  • 5. GENERALIDADES ■ Después de la etapa de análisis, se suele generar una representación intermedia explícita del programa fuente. Dicha representación intermedia se puede considerar como un programa para una máquina abstracta. ■ Se puede considerar esta representación intermedia como un programa para una máquina abstracta. ■ Esta representación intermedia debe tener dos propiedades importantes; debe ser fácil de producir y fácil de traducir al programa objeto. ■ En el proceso de traducir un programa fuente a código destino, un compilador puede construir una o más representaciones intermedias, las cuales pueden tener una variedad de formas. ■ La representación intermedia puede tener diversas formas. Los árboles sintácticos son una forma de representación intermedia; por lo general, se utilizan durante el análisis sintáctico y semántico. ■ Otra forma intermedia es la llamada “código de tres direcciones”, que es como el lenguaje ensamblador para una máquina en la que cada posición de memoria puede actuar como un registro.
  • 6. FUNCIONAMIENTO ■ En lugar de generar código ensamblador directamente, los compiladores generan un código intermedio que es más parecido al código ensamblador, las operaciones por ejemplo nunca se hacen con más de dos operandos. ■ Al no generarse código ensamblador el cual es dependiente de la computadora especifica, sino código intermedio, se puede reutilizar la parte del compilador que genera código intermedio en otro compilador para una computadora con diferente procesador cambiando solamente el generador de código ensamblador al cual llamamos back-end, la desventaja obviamente es la lentitud que esto conlleva. ■ El código intermedio no es el lenguaje de programación de ninguna máquina real, sino que corresponde a una máquina abstracta, que se debe de definir lo más general posible, de forma que sea posible traducir este código intermedio a cualquier máquina real.
  • 7. REPRESENTACION INTERMEDIA ■ Esta representación intermedia tiene varias propiedades. – Primera, cada instrucción de tres direcciones tiene a lo sumo un operador, además de la asignación. Por tanto, cuando se generan esas instrucciones, el compilador tiene que decidir el orden en que deben efectuarse las operaciones. – Segunda, el compilador debe generar un nombre temporal para guardar los valores calculados por cada instrucción. – Tercera, algunas instrucciones de ‘tres direcciones” tienen
  • 8. TIPOS DE REPRESENTACION INTERMEDIA ■ Códigos intermedios puede ser representado en una variedad de formas y tienen sus propios beneficios. ■ Alto nivel IR - Alto nivel de representación de código intermedio está muy cerca de la lengua de origen. ■ Pueden ser fácilmente generados desde el código fuente y podemos aplicar fácilmente modificaciones de código para mejorar el rendimiento. ■ Pero para optimización de la máquina destino, es menos preferido. ■ Bajo Nivel IR - Este es cerca de la máquina de destino, lo que lo hace adecuado para registro y asignación de memoria, un conjunto de instrucciones selección, etc. es bueno para optimizaciones dependientes de la máquina.
  • 10. JUSTIFICACION ■ El código fuente puede ser traducido en su código de la máquina destino, entonces, ¿por qué hemos de traducir el código fuente en un código intermedio que luego se traduce en su código de destino? 1. Si un compilador traduce el idioma de origen a su ordenador de destino sin tener la opción de generar código intermedio, a continuación, en cada nueva máquina, una nativa del compilador completo es necesario. 2. Código Intermedio elimina la necesidad de un nuevo compilador completo para cada máquina de la sección de análisis mismo de todos los compiladores. 3. La segunda parte del compilador, síntesis, se modifica de acuerdo a la máquina de destino. 4. Es más fácil de aplicar las modificaciones del código fuente para mejorar rendimiento del código mediante la aplicación de técnicas de optimización código el código intermedio.
  • 11.
  • 12. OBJETIVOS ■ El objetivo del código intermedio es reducir el número de programas necesarios para construir traductores, y permitir más fácilmente la transportabilidad de unas máquinas a otras. ■ Supóngase que se tienen n lenguajes, y se desea construir traductores entre ellos. ■ Sería necesario construir n*(n-1) traductores. Sin embargo si se construye un lenguaje intermedio, tan sólo son necesarios 2*n traductores. ■ Así por ejemplo un fabricante de compiladores puede construir un compilador para diferentes máquinas objeto con tan sólo cambiar las dos últimas fases de la tarea de síntesis.
  • 13. MAQUINA ABSTRACTA ■ La arquitectura de la máquina abstracta se elegirá de forma que contribuya a facilitar la portabilidad dentro del grupo de arquitecturas hacia las que previsiblemente se dirigirá el código objeto. ■ Habitualmente las arquitecturas típicas de máquinas abstractas son: – Máquinas basadas en pila, – basadas en registros, – combinación de pilas y registros, – orientadas a objetos. ■ También se pueden clasificar desde el punto de vista de la cantidad y complejidad de sus instrucciones en máquinas CISC (Complex Instruction Set Computer)y RISC (Reduced Instruction Set Computer).
  • 14. TIPOS DE REPRESENTACIONES INTERMEDIAS 1. Notación polaca 2. Código P 3. Triplos
  • 15. NOTACION POLACA ■ El lógico polaco Jan Łukasiewicz inventó esta notación alrededor de 1920 para simplificar la lógica proposicional. ■ La notación polaca, también conocida como notación de prefijo o notación prefija, es una forma de notación para la lógica, la aritmética, el álgebra y la computación. ■ Su característica distintiva es que coloca los operadores a la izquierda de sus operandos. ■ Si la paridad de los operadores es fija, el resultado es una sintaxis que carece de paréntesis u otros signos de agrupación, y todavía puede ser analizada sin ambigüedad.
  • 20. CODIGO P ■ El código P comenzó como un código ensamblador objetivo estándar producido por varios compiladores Pascal en la década de 1970 y principios de la de 1980. ■ El código P hace referencia a máquinas que utilizan o se auxilian de pilas para generar código objeto. ■ En muchos caso la P se asociado a código portable el cual garantiza que el código compilado en una máquina se pueda ejecutar en otras. ■ También se recomienda la no utilización de carácterísticas especiales exclusivas de alguna arquitectura de computadoras en particular. ■ Este tipod e código es el utilizado por los interpretes par aguardar el código fuente sintetizado para su posterior interpretación. ■ Cada Lenguaje interpretado maneja un código P distinto, usualmente se suele hacer analogía entre PCODE y BYTECODE
  • 22. TRIPLOS ■ Las proposiciones de tres direcciones se parece mucho al ensamblador, el cual es un lenguaje intermedio más entendible para la máquina. ■ Esta notación se puede implementar como registros con campos para el operador y operadores. ■ Las estructuras de control (if, switch, while, do-while, for) son realmente etiquetas goto disfrazadas.
  • 23. EJEMPLO 0 ■ (a * b + h) - j * k + 1
  • 24. EJEMPLO 01 ■ a + b * (c + d) * (f + k ) * d
  • 25. EJEMPLO 02 a > b OR b < k + h AND f * b + d == z OR NOT k>f