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
Introduccion al assemblerIntroduccion al assembler
Introduccion al assembler
 
Introduccion al assembler[1]
Introduccion al assembler[1]Introduccion al assembler[1]
Introduccion al assembler[1]
 
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

UNIDAD III Esquemas de comunicacion pptx
UNIDAD III Esquemas de comunicacion pptxUNIDAD III Esquemas de comunicacion pptx
UNIDAD III Esquemas de comunicacion pptxElybe Hernandez
 
Cuestionario 20222222222222222222222224.pdf
Cuestionario 20222222222222222222222224.pdfCuestionario 20222222222222222222222224.pdf
Cuestionario 20222222222222222222222224.pdffredyflores58
 
1.1 Los 14 principios del Toyota Way -2024.pdf
1.1 Los 14 principios del Toyota Way -2024.pdf1.1 Los 14 principios del Toyota Way -2024.pdf
1.1 Los 14 principios del Toyota Way -2024.pdfThe16Frame
 
Diagramas de Tiempo.pptpara electronica aplicada
Diagramas de Tiempo.pptpara electronica aplicadaDiagramas de Tiempo.pptpara electronica aplicada
Diagramas de Tiempo.pptpara electronica aplicadaSantiago Luis Gómez
 
DIFERENCIA DE COMPRESION Y TENSION EN UN CUERPO
DIFERENCIA DE COMPRESION Y TENSION EN UN CUERPODIFERENCIA DE COMPRESION Y TENSION EN UN CUERPO
DIFERENCIA DE COMPRESION Y TENSION EN UN CUERPOSegundo Silva Maguiña
 
herrramientas de resistividad para registro de pozos.pptx
herrramientas de resistividad para registro de pozos.pptxherrramientas de resistividad para registro de pozos.pptx
herrramientas de resistividad para registro de pozos.pptxDiegoSuarezGutierrez
 
expo unidad5 metodologia de los sistemas blandos .pptx
expo unidad5 metodologia de los sistemas blandos .pptxexpo unidad5 metodologia de los sistemas blandos .pptx
expo unidad5 metodologia de los sistemas blandos .pptxeduardo1sauceda7
 
METRADOS EN OBRAS DE PAVIMENTACION- ACTUALIZADA.pptx
METRADOS EN OBRAS DE PAVIMENTACION- ACTUALIZADA.pptxMETRADOS EN OBRAS DE PAVIMENTACION- ACTUALIZADA.pptx
METRADOS EN OBRAS DE PAVIMENTACION- ACTUALIZADA.pptxEdwardRodriguezPalom1
 
REAJUSTE DE PRECIOS EN LOS CONTRATOS ADMINISTRATIVOS DE OBRA PUBLICA PACTADOS...
REAJUSTE DE PRECIOS EN LOS CONTRATOS ADMINISTRATIVOS DE OBRA PUBLICA PACTADOS...REAJUSTE DE PRECIOS EN LOS CONTRATOS ADMINISTRATIVOS DE OBRA PUBLICA PACTADOS...
REAJUSTE DE PRECIOS EN LOS CONTRATOS ADMINISTRATIVOS DE OBRA PUBLICA PACTADOS...p39961945
 
PRACTICAS_DE_AUTOMATIZACION_industrial (1).pdf
PRACTICAS_DE_AUTOMATIZACION_industrial (1).pdfPRACTICAS_DE_AUTOMATIZACION_industrial (1).pdf
PRACTICAS_DE_AUTOMATIZACION_industrial (1).pdfjorge477728
 
subestaciones electricas, distribucion de energia
subestaciones electricas, distribucion de energiasubestaciones electricas, distribucion de energia
subestaciones electricas, distribucion de energiazaydaescalona
 
ESFUERZO EN VIGAS SESIÓN 5 PROBLEMA RESUELTOS.pdf
ESFUERZO EN VIGAS SESIÓN 5 PROBLEMA RESUELTOS.pdfESFUERZO EN VIGAS SESIÓN 5 PROBLEMA RESUELTOS.pdf
ESFUERZO EN VIGAS SESIÓN 5 PROBLEMA RESUELTOS.pdfSegundo Silva Maguiña
 
Diseno de Estructuras de Acero - 5ta Ed - McCormac.pdf
Diseno de Estructuras de Acero - 5ta Ed - McCormac.pdfDiseno de Estructuras de Acero - 5ta Ed - McCormac.pdf
Diseno de Estructuras de Acero - 5ta Ed - McCormac.pdfEdwinHurtado31
 
Diseño digital - M. Morris Mano - 3ed.pdf
Diseño digital - M. Morris Mano - 3ed.pdfDiseño digital - M. Morris Mano - 3ed.pdf
Diseño digital - M. Morris Mano - 3ed.pdfssuserf46a26
 
TEST ESPACIAL CONTEO DE CUBOS y TEST DE MOSAICOS
TEST ESPACIAL CONTEO DE CUBOS y TEST DE MOSAICOSTEST ESPACIAL CONTEO DE CUBOS y TEST DE MOSAICOS
TEST ESPACIAL CONTEO DE CUBOS y TEST DE MOSAICOSCarlosHuamulloDavila1
 
Trabajo de cristalografia. año 2024 mes de mayo
Trabajo de cristalografia. año 2024 mes de mayoTrabajo de cristalografia. año 2024 mes de mayo
Trabajo de cristalografia. año 2024 mes de mayoAntonioCardenas58
 
subestaciones electricas , elementos y caracteristicas
subestaciones electricas , elementos y caracteristicassubestaciones electricas , elementos y caracteristicas
subestaciones electricas , elementos y caracteristicaszaydaescalona
 
CONCEPTOS BASICOS DE ROBOTICA, CLASES DE ROBOTS
CONCEPTOS BASICOS DE ROBOTICA, CLASES DE ROBOTSCONCEPTOS BASICOS DE ROBOTICA, CLASES DE ROBOTS
CONCEPTOS BASICOS DE ROBOTICA, CLASES DE ROBOTSrobinarielabellafern
 
707555966-El-Libro-de-La-Inteligencia-Artificial-Version-11-Alfredovela.pdf
707555966-El-Libro-de-La-Inteligencia-Artificial-Version-11-Alfredovela.pdf707555966-El-Libro-de-La-Inteligencia-Artificial-Version-11-Alfredovela.pdf
707555966-El-Libro-de-La-Inteligencia-Artificial-Version-11-Alfredovela.pdfErnestoCano12
 

Recently uploaded (20)

UNIDAD III Esquemas de comunicacion pptx
UNIDAD III Esquemas de comunicacion pptxUNIDAD III Esquemas de comunicacion pptx
UNIDAD III Esquemas de comunicacion pptx
 
Cuestionario 20222222222222222222222224.pdf
Cuestionario 20222222222222222222222224.pdfCuestionario 20222222222222222222222224.pdf
Cuestionario 20222222222222222222222224.pdf
 
1.1 Los 14 principios del Toyota Way -2024.pdf
1.1 Los 14 principios del Toyota Way -2024.pdf1.1 Los 14 principios del Toyota Way -2024.pdf
1.1 Los 14 principios del Toyota Way -2024.pdf
 
Diagramas de Tiempo.pptpara electronica aplicada
Diagramas de Tiempo.pptpara electronica aplicadaDiagramas de Tiempo.pptpara electronica aplicada
Diagramas de Tiempo.pptpara electronica aplicada
 
DIFERENCIA DE COMPRESION Y TENSION EN UN CUERPO
DIFERENCIA DE COMPRESION Y TENSION EN UN CUERPODIFERENCIA DE COMPRESION Y TENSION EN UN CUERPO
DIFERENCIA DE COMPRESION Y TENSION EN UN CUERPO
 
herrramientas de resistividad para registro de pozos.pptx
herrramientas de resistividad para registro de pozos.pptxherrramientas de resistividad para registro de pozos.pptx
herrramientas de resistividad para registro de pozos.pptx
 
expo unidad5 metodologia de los sistemas blandos .pptx
expo unidad5 metodologia de los sistemas blandos .pptxexpo unidad5 metodologia de los sistemas blandos .pptx
expo unidad5 metodologia de los sistemas blandos .pptx
 
METRADOS EN OBRAS DE PAVIMENTACION- ACTUALIZADA.pptx
METRADOS EN OBRAS DE PAVIMENTACION- ACTUALIZADA.pptxMETRADOS EN OBRAS DE PAVIMENTACION- ACTUALIZADA.pptx
METRADOS EN OBRAS DE PAVIMENTACION- ACTUALIZADA.pptx
 
REAJUSTE DE PRECIOS EN LOS CONTRATOS ADMINISTRATIVOS DE OBRA PUBLICA PACTADOS...
REAJUSTE DE PRECIOS EN LOS CONTRATOS ADMINISTRATIVOS DE OBRA PUBLICA PACTADOS...REAJUSTE DE PRECIOS EN LOS CONTRATOS ADMINISTRATIVOS DE OBRA PUBLICA PACTADOS...
REAJUSTE DE PRECIOS EN LOS CONTRATOS ADMINISTRATIVOS DE OBRA PUBLICA PACTADOS...
 
PRACTICAS_DE_AUTOMATIZACION_industrial (1).pdf
PRACTICAS_DE_AUTOMATIZACION_industrial (1).pdfPRACTICAS_DE_AUTOMATIZACION_industrial (1).pdf
PRACTICAS_DE_AUTOMATIZACION_industrial (1).pdf
 
subestaciones electricas, distribucion de energia
subestaciones electricas, distribucion de energiasubestaciones electricas, distribucion de energia
subestaciones electricas, distribucion de energia
 
Convocatoria de Becas Caja de Ingenieros_UOC 2024-25
Convocatoria de Becas Caja de Ingenieros_UOC 2024-25Convocatoria de Becas Caja de Ingenieros_UOC 2024-25
Convocatoria de Becas Caja de Ingenieros_UOC 2024-25
 
ESFUERZO EN VIGAS SESIÓN 5 PROBLEMA RESUELTOS.pdf
ESFUERZO EN VIGAS SESIÓN 5 PROBLEMA RESUELTOS.pdfESFUERZO EN VIGAS SESIÓN 5 PROBLEMA RESUELTOS.pdf
ESFUERZO EN VIGAS SESIÓN 5 PROBLEMA RESUELTOS.pdf
 
Diseno de Estructuras de Acero - 5ta Ed - McCormac.pdf
Diseno de Estructuras de Acero - 5ta Ed - McCormac.pdfDiseno de Estructuras de Acero - 5ta Ed - McCormac.pdf
Diseno de Estructuras de Acero - 5ta Ed - McCormac.pdf
 
Diseño digital - M. Morris Mano - 3ed.pdf
Diseño digital - M. Morris Mano - 3ed.pdfDiseño digital - M. Morris Mano - 3ed.pdf
Diseño digital - M. Morris Mano - 3ed.pdf
 
TEST ESPACIAL CONTEO DE CUBOS y TEST DE MOSAICOS
TEST ESPACIAL CONTEO DE CUBOS y TEST DE MOSAICOSTEST ESPACIAL CONTEO DE CUBOS y TEST DE MOSAICOS
TEST ESPACIAL CONTEO DE CUBOS y TEST DE MOSAICOS
 
Trabajo de cristalografia. año 2024 mes de mayo
Trabajo de cristalografia. año 2024 mes de mayoTrabajo de cristalografia. año 2024 mes de mayo
Trabajo de cristalografia. año 2024 mes de mayo
 
subestaciones electricas , elementos y caracteristicas
subestaciones electricas , elementos y caracteristicassubestaciones electricas , elementos y caracteristicas
subestaciones electricas , elementos y caracteristicas
 
CONCEPTOS BASICOS DE ROBOTICA, CLASES DE ROBOTS
CONCEPTOS BASICOS DE ROBOTICA, CLASES DE ROBOTSCONCEPTOS BASICOS DE ROBOTICA, CLASES DE ROBOTS
CONCEPTOS BASICOS DE ROBOTICA, CLASES DE ROBOTS
 
707555966-El-Libro-de-La-Inteligencia-Artificial-Version-11-Alfredovela.pdf
707555966-El-Libro-de-La-Inteligencia-Artificial-Version-11-Alfredovela.pdf707555966-El-Libro-de-La-Inteligencia-Artificial-Version-11-Alfredovela.pdf
707555966-El-Libro-de-La-Inteligencia-Artificial-Version-11-Alfredovela.pdf
 

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