Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad

distintas formas de una representación de Codigo Intermedio, Guías, Proyectos, Investigaciones de Lenguajes de Programación

Definicion sobre Codigo Intermedio (incluyendo la representación de tres y cuatro direcciones).

Tipo: Guías, Proyectos, Investigaciones

2019/2020
En oferta
30 Puntos
Discount

Oferta a tiempo limitado


Subido el 01/10/2020

lizeth-prado-godoy
lizeth-prado-godoy 🇲🇽

5

(3)

4 documentos

1 / 6

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
Carrera:
Ing. Sistemas Computacionales
Asignatura:
Lenguajes Autómatas II
Unidad 2:
Generación de código intermedio.
Tema:
Distintas formas de representación de código
Intermedio, (incluyendo la de tres y cuatro direcciones)
Alumna:
Prado Godoy Lizeth
Profesor:
I.S.C. Carlos Sánchez Pérez
Fecha:
30/09/2020
pf3
pf4
pf5
Discount

En oferta

Vista previa parcial del texto

¡Descarga distintas formas de una representación de Codigo Intermedio y más Guías, Proyectos, Investigaciones en PDF de Lenguajes de Programación solo en Docsity!

Carrera:

Ing. Sistemas Computacionales

Asignatura:

Lenguajes Autómatas II

Unidad 2:

Generación de código intermedio.

Tema:

Distintas formas de representación de código

Intermedio, (incluyendo la de tres y cuatro direcciones)

Alumna:

Prado Godoy Lizeth

Profesor:

I.S.C. Carlos Sánchez Pérez

Fecha:

Introducción 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? Vamos a ver las razones por las que necesitamos un código intermedio. 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. 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. La segunda parte del compilador, síntesis, se modifica de acuerdo a la máquina de destino. 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. Representación 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 Intermedio Código Fuente Código de Destino

Triples Cada instrucción en triples presentación tiene tres campos : op, arg1, arg2.Los resultados de las respectivas sub-expresiones son indicados por la posición de expresión. Similitud con Triples representan DAG y árbol de sintaxis. Son equivalentes a DAG al tiempo que representan las expresiones. Op Arg 1 Arg 2

  • C d
  • B (0)
  • (1) (0) = (2) Triples ante el problema de optimización código un inmovilismo mientras que, en la medida en que los resultados son posicionales y cambiar el orden o la posición de una expresión puede causar problemas. Triples Cada instrucción en triples presentación tiene tres campos : op, arg1, arg2.Los resultados de las respectivas sub-expresiones son indicados por la posición de expresión. Similitud con Triples representan DAG y árbol de sintaxis. Son equivalentes a DAG al tiempo que representan las expresiones. Op Arg 1 Arg 2
  • C d
  • B (0)
  • (1) (0) = (2) Triples ante el problema de optimización código un inmovilismo mientras que, en la medida en que los resultados son posicionales y cambiar el orden o la posición de una expresión puede causar problemas. Indirectos Triples Esta representación es una mejora sobre representación triples. Se usa punteros en lugar de su posición para almacenar los resultados. Esto permite a los optimizadores libremente volver a colocar la sub-expresión para producir un código optimizado. Declaraciones

Una variable o procedimiento tiene que ser declarado antes de que se pueda utilizar. Declaración implica asignación de espacio en la memoria y la entrada de tipo y nombre de la tabla de símbolos. Un programa puede ser codificada y diseñado siguiendo la estructura de la máquina destino en mente, pero es posible que no siempre se pueda convertir con precisión un código fuente para su idioma de destino. Tomando el conjunto del programa, como una colección de procedimientos y sub- procedimientos, es posible declarar que todos los nombres locales en el procedimiento. Asignación de memoria se realiza de manera consecutiva y nombres son asignados a la memoria en la secuencia en la que se declara en el programa. Podemos utilizar el desplazamiento variable y ponerlo a cero {offset = 0} que denotan la dirección base. La fuente lenguaje de programación y la arquitectura del equipo de destino puede variar en la forma los nombres se almacenan, por lo tanto se utiliza direccionamiento relativo. Mientras que el primer nombre se asigna memoria a partir de la posición de memoria 0 {offset= 0}, el siguiente nombre declaró después, debe ser asignada la memoria junto a la primera. Ejemplo: Tomamos el ejemplo de lenguaje de programación C en una variable de tipo entero se le asigna 2 bytes de memoria y una variable de tipo float se asigna 4 bytes de memoria. int a; float b; Allocation process: {offset = 0 } int a; id.type = int id.width = 2 offset = offset + id.width {offset = 2 } float b; id.type = float id.width = 4 offset = offset + id.width {offset = 6 } Para entrar en este detalle en una tabla de símbolos, un procedimiento entrar puede ser utilizado. Este método puede tener la siguiente estructura: enter(name, type, offset) Este procedimiento debe crear una entrada en la tabla de símbolos, de nombre de la variable , en su tipo y el tipo de desplazamiento de dirección relativa en su área de datos.[ CITATION tut18 \l 2058 ]