You are on page 1of 9

Panuco, Ver.

A 13 De Marzo Del 2016

Unidad 2.- Generacin


de cdigo intermedio.
LENGUAJES Y AUTOMATAS II SCD-1016
ING. ENRIQUE PONCE RIVERA.

Enoc Emmanuel Arguelles Huerta


INSTITUTO TECNOLOGICO SUPERIOR DE PANUCO | INGENIERIA EN SISTEMAS COMPUTACIONALES.

0
INDICE
INTRODUCCION. .................................................................................................................................. 2
2.1 Notaciones. ................................................................................................................................... 3
2.1.1 Notacin Prefija. ......................................................................................................................... 3
2.1.2 Notacin infija. ........................................................................................................................... 3
2.1.3 Notacin postfija. ....................................................................................................................... 3
2.2 Representaciones de cdigo Intermedio. ..................................................................................... 4
2.2.1 Notacin Polaca.......................................................................................................................... 4
2.2.2 Cdigo P...................................................................................................................................... 4
2.2.3 Triplos ......................................................................................................................................... 4
2.3 Esquema de generacin ................................................................................................................ 6
2.3.1 Variables y constantes................................................................................................................ 6
2.3.2 Expresiones. ............................................................................................................................... 6
2.3.3 Instrucciones de asignacin. ...................................................................................................... 6
2.3.4 Instrucciones de control ............................................................................................................. 7
2.3.5 Funciones ................................................................................................................................... 7
Conclusin ........................................................................................................................................... 8
BIBLIOGRAFIA. ..................................................................................................................................... 8

1
INTRODUCCION.

El compilador en su proceso de compilacin trabaja con el cdigo fuente del lenguaje de


programacin y despus de llevar a cabo los anlisis revisados en la unidad anterior (anlisis
semntico y anlisis sintctico) este toma esas instrucciones para generar una codificacin que sea
simple de extraer del lenguaje de programacin y lo suficientemente compleja para producir un
cdigo que sea fcil de implementar en la insercin al programa objeto.

2
2.1 Notaciones.
Las notaciones son las formas en que una expresin matemtica se puede escribir y estas se dividen
en tres distintos tipos los cuales pueden ser infijo, postfijo y prefijo.

2.1.1 Notacin Prefija.


En esta notacin se acomodan los primero los operandos y luego los operadores siguiendo el rbol
binario de manera prefija (Raz, izquierda, derecha).
Ejemplo.- +AB, notacin prefija.

2.1.2 Notacin infija.


Esta es la notacin que usan las personas en la aplicacin real, esta est elaborada de la manera
inorden (Izquierda, raz, derecha).
Ejemplo.- A+B, notacin infija.

2.1.3 Notacin postfija.


En esta notacin los operadores van despus de los operandos, esta est elaborada de la manera
postorden. (Izquierda, derecha, raz).
Ejemplo.- AB+, notacin posfija.

3
2.2 Representaciones de cdigo
Intermedio.
A continuacin analizaremos algunas de las maneras ms bsicas de representar el cdigo
intermedio.

2.2.1 Notacin Polaca


Esta notacin es el otro nombre con el que se le conoce a la notacin prefija, es una forma de
notacin ocupada principalmente para la lgica, la aritmtica y el lgebra. Una de las principales
caractersticas de esta notacin es como lo mencionamos anteriormente en el captulo 2.1.1, en la
cual se acomodan primero los operandos y luego los operadores.

2.2.2 Cdigo P
EL cdigo p fue en un inicio un cdigo ensamblador cuyo objetivo principal era producido por varios
compiladores Pascal alrededor de los aos 70 y 80. Este Cdigo fue inicialmente diseado para
cdigo real para una mquina de pila hipottica asumiendo la idea que era lograr que los
compiladores de pascal pudieran transportarse de manera sencilla requiriendo solo que se
regresara a escribir el cdigo de intrprete de la maquina P para una plataforma, el cdigo P tambin
demostr ser de gran utilidad como cdigo intermedio y ha sido utilizado en varias extensiones y
modificaciones de el mismo en distintos compiladores de cdigo nativo, en su mayora de lenguaje
de similitud a pascal.

2.2.3 Triplos
Las proposiciones que cuenta con 3 direcciones se parecen demasiado a el ensamblador el cual es
un lenguaje de tipo intermedio ms fcil de diferir por parte de la mquina. El inconveniente que
pudiere presentarse al usar cudruplos es que se tienen que insertar algunos valores de carcter
temporal en la tabla de smbolos. Con una estructura de tres campos esto no es as, los valores
temporales quedan omitido.
La estructura de un triplo puede presentarse as:
(Operador, Operando 1, Operando 2).
Y el resultado de esta cuenta se ver asociado con el nmero de la tripleta que se est trabajando.

4
2.2.4 Cudruplos.
Las cudruplas o cudruplos son formas que asignan mayor facilidad a la aplicacin de muchas
optimizaciones, pero se debe de tener un algoritmo para poder llevar a cabo la reutilizacin de las
variables temporales y poder reutilizar los registros del procesador para hacer el proceso ms gil.
La estructura que toma un registro de cuatro campos es la siguiente
(Operador, Operando 1, Operando 2, Resultado)
AL tomar esta estructura el operador 1, operador 2 y el resultado pueden tomarse en forma de
constantes, identificadores o variable temporal definidas por el compilador.

5
2.3 Esquema de generacin
Los esquemas de generacin son las estrategias o acciones que se debern realizarse y tomarse en
cuenta en el momento de generar cdigo intermedio.
Los esquemas de generacin dependen de cada lenguaje. Tomaremos algunos esquemas de
generacin del lenguaje C.

2.3.1 Variables y constantes.


Las variables y constantes deben separarse de tal manera que queden las expresiones una por una
de manera simple.
Por ejemplo: int a, y, z;
Se tiene que llevar a cabo la divisin en int x; int y; int z; de manera respectiva.

2.3.2 Expresiones.
Esta funcin recibe una cadena que significa una lnea de cdigo intermedio y toma las medidas
oportunas para que este cdigo pueda ser utilizado. Estas medidas pueden tomar la escritura de
una lnea dentro de un fichero respectivo, para poder almacenar la instruccin en una lista que mas
adelante podr pasarse a otros mdulos que llegramos a necesitar en nuestro compilador de
cdigo.

2.3.3 Instrucciones de asignacin.


Las instrucciones de asignacin realizan operaciones de asignacin, que consisten en tomar el valor
de la derecha del operador de asignacin (=) y almacenarlo en el elemento de la izquierda, Por
ejemplo.

v = 42
En esta expresin podemos ver que la variable V est tomando el valor de 42 que est justo a la
derecha del operador de igualdad.

6
2.3.4 Instrucciones de control
Las instrucciones de control son aquellas que nos permiten variar o alterar la secuencia normal de
ejecucin de un programa. Prcticamente la totalidad de lenguajes de programacin de alto nivel
soportan tres tipos de instrucciones de control:

Esta forma de programacin slo permite resolver problemas sencillos. Para resolver problemas
ms complejos, nos puede interesar que dependiendo de los valores de los datos, se ejecuten unas
instrucciones u otras.

2.3.5 Funciones
Las funciones pueden reducir a en lnea, lo que se hace que expandir el cdigo original de la funcin.
Las funciones se descomponen simplificando los parmetros de manera individual al igual que el
valor de retorno.
Las funciones pueden reducir a en lnea. Lo que se hace es expandir el cdigo original de la funcin.
Las funciones se descomponen simplificando los parmetros de manera individual al igual que el
valor de retorno.

Ejemplo:
cuadrado(); //Declaramos la funcin
// regresar el cuadrado de un nmero
double cuadrado(double n)
{
return n*n;
}

7
Conclusin
Para que un compilador lleve a cabo completamente su funcin de transformar el cdigo fuente a
cdigo maquina debe de cumplir y asimilar estas reglas de cdigo intermedio para que de esta
manera ensamble un cdigo correcto que pueda ser fcil de interpretar por parte del procesador y
asi realizar la instruccin que se le est indicando a este.

BIBLIOGRAFIA.
Aho, A. V. (1986). Compiladores. Principios, Tecnicas y Herramientas. Mexico: Pearson.
Aho, A. V. (2008). Compiladores. Principios, Tecnicas y Herramientas, Segunda Edicion. Mexico:
Pearson.

You might also like