Representación de Código Intermedio

April 19, 2018 | Author: EdilserMorales | Category: Compiler, Programming Language, Computer Science, Software Development, Software
Share Embed Donate


Short Description

Descripción: informacion...

Description

Representación de código intermedio. Existen maneras formales para representar código intermedio. Código P. Triplos. Cuádruplos. Estas notaciones simplifican la traducción de nuestro código fuente a nuestro código objeto ya que ahorran y acotan símbolos de la tabla de símbolos -> Código P n tipo de lenguaje interpretado. idiomas P!código son una especie de híbrido" que caen entre lenguajes compilados y lenguajes interpretados de la manera que se ejecuten. #l igual que un lenguaje interpretado" la programación del P!código se con$ierte en una forma binaria de forma automática cuando se ejecuta" en lugar de tener que ser compilado. %in embargo" a diferencia de un lenguaje compilado el archi$o binario ejecutable se almacena en pseudo!código" no en lenguaje de máquina. #demás" a diferencia de un lenguaje interpretado" el programa no tiene que ser con$ertida a binario cada $e& que se ejecute. 'espu(s de que se con$ierte en P!código la primera $e&" la $ersión pseudo!código se utili&a para cada ejecución adicionales. Código P )y por tanto sus programas* tienden a ser más lento que los lenguajes compilados y programas" pero más rápido que lenguajes interpretados" y por lo general tienen autori&ación para algunas funciones del sistema operati$o de bajo ni$el" pero no el acceso directo al hard+are. ,o requieren compiladores a $eces costosos" a menudo se incluyen junto con los sistemas operati$os" y algunos lenguajes de código p!son más fáciles de programar que lenguajes compilados. Ejemplos de lenguas Pcode son -a$a" Python y E// 0 E// objetos. ->Triplos En la historia de los compiladores han sido utili&adas una amplia $ariedad de representaciones intermedias como lo es la siguiente clase de representación de código intermedio de un árbol de 1 direcciones"2 para los operandos y una para la ubicación del resultado. esta clase incluye un amplio numero de representaciones diferentes entre las cuales encontramos cuadruplos y triples. la principal diferencia

entre estas notaciones y la notación postfija es que ellos incluyen referencias explicitas para los resultados de los cálculos intermedios" mientras que la notación posfija los resultados son implícitos al representarlos en una pila. •



3a diferencia entre triples y cuadruplos es que con los triples es referenciado el $alor intermedio hacia el numero del triple que lo creo" pero en los cuádruplos requiere que ellos tengan nombre implícitos. 3os triples tienen una $entaja ob$ia de ser mas consistente" pero ellos dependen de su posición" y hacen que la optimi&ación presente cambios de código mucho mas compleja. Para e$itar tener que introducir nombres temporales en la tabla de símbolos" se hace referencia a un $alor temporal seg4n la posición de la proposición que lo calcula. 3as propias instrucciones representan el $alor del nombre temporal. 3a implementación se hace mediante registros de solo tres campos )op" arg5" arg2*.





En la notación de tripletes se necesita menor espacio y el compilador no necesita generar los nombres temporales. %in embargo" en esta notación" trasladar una proposición que defina un $alor temporal exige que se modifiquen todas las referencias a esa proposición. 3o cual supone un incon$eniente a la hora de optimi&ar el código" pues a menudo es necesario cambiar proposiciones de lugar. na forma de solucionar esto consiste en listar las posiciones a las tripletas en lugar de listar las tripletas mismas. 'e esta manera" un optimi&ador podría mo$er una instrucción reordenando la lista" sin tener que mo$er las tripletas en si

///////////////////////////////////////////////////////////////

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 D! " #rbol de sintaxis. Son e$uivalentes a D! al tiempo $ue representan las expresiones. %p

rg1

rg2

&

c

d

'

b

()*

'

(1*

()*

+

(2*

Triples ante el problema de optimiación código un inmovilismo mientras $ue, en la medida en $ue los resultados son posicionales " cambiar el orden o la posición de una expresión puede causar problemas.

ndirectos Triples sta representación es una me/ora sobre representación triples. Se usa punteros en lugar de su posición para almacenar los resultados. sto permite a los optimiadores libremente volver a colocar la subexpresión para producir un código optimiado.

 Tripletas Indirectas • Tripletas indirectas. Solucionan el problemas de la reordenación mediante indirección • Ejemplo: – Fuente: A=B!"#/E F=!"# – $peraciones Tripletas %. &%' &%' "( !( # ). &)' &)' /( &%'( E *. &*' &*' ( B &)' +. &+' &+' =( A( &*' ,. &%' &,' =( F( &%' -. &,' !ompiladores II  !udruplas

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF