Codigo3d

Solo disponible en BuenasTareas
  • Páginas : 6 (1491 palabras )
  • Descarga(s) : 0
  • Publicado : 7 de diciembre de 2011
Leer documento completo
Vista previa del texto
Código intermedio y tabla de símbolos
Organización de lenguajes y compiladores 2 Aux. Oscar Estuardo de la Mora

Código intermedio
El microprocesador de una computadora no puede interpretar instrucciones muy complejas, para poder ser ejecutadas es necesari o transformar este código complejo en instrucciones simples. El código intermedio es un código equivalente de bajo nivel de un código dealto nivel es la solución a este problema y es la forma en que los compiladores funcionan. El código intermedio en nuestro caso, esta escrito en código C/C++, se usan sente ncias simples ya existentes en este lenguaje para generar dicho código intermedio. Por ejemplo, una computadora no puede ejecutar este código: P = a + b + c / d -5*Z; Si no que lo transforma a código intermedio

t1 = a + b; t2= c/d; t3 = t1 + t2; t4 = 5*Z; P = t3 – t4;
Pero... que son esas variables nuevas generadas??, Estas variables son llamadas variables temporales, son variables auxiliares que nos sirven para poder ejecutar código simple y funcionan guardando temporalmente instrucciones equivalentes, podemos ver en este caso que se respeto la precedencia de los operadores, en otras palabras, el orden en que lasinstrucciones deben ejecutarse, por ejemplo, las multiplicaciones y divisiones tienen mayor precedencia que las sumas y restas, entonces ejecutamos esas antes. Podemos ver que las instrucciones son más simples, pero equivalentes en funcionamiento que la original.

Código intermedio y tabla de símbolos
Organización de lenguajes y compiladores 2 Aux. Oscar Estuardo de la Mora Este códigointermedio es llamado código Tres Direcciones (3Dir de ahora en adelante) y se llama así pues maneja tres direcciones de memoria en cada instrucción. En dicho código tenemos ciertas restricciones: No hay ciclos while, for, do-while (o repeat) No hay operaciones aritméticas complejas No hay comparaciones lógicas complejas No hay paso de parámetros por parte de las funciones y/o procedimientosInstrucción IF (sí condicional)
La instrucción if es la mas simple de las instrucciones en 3Dir: Su código equivalente es: Tenemos la instrucción con la condición, y luego tenemos las instrucciones goto que tienen asociadas “etiquetas”, esto son saltos que usan dichas etiquetas para poder ir a cierto lugar del código. Si la instrucción es verdadera, ejecutará el primer goto e irá hacia la etiqueta L1, si esfalsa, se ejecutará el segundo goto con la etiqueta L2 y saltará al código si es falso.

if( a > b){ //codigo si es verdadero } //codigo si es falso Su código equivalente es: if(a > b) goto L1; goto L2; L1: //codigo si es verdadero L2: //código si es falso

Podemos notar también que el código falso de todos modos se va a ejecutar después de las instrucciones si la condición es verdadera, asímismo también el código 3Dir equivalente, si el programa encuentra una etiqueta, simplemente la ignorará y seguirá ejecutando el código siguiente.

Código intermedio y tabla de símbolos
Organización de lenguajes y compiladores 2 Aux. Oscar Estuardo de la Mora

Ahora, que pasa si encontramos instrucciones complejas como este: if(a > b) and (b == 5) { //codigo si es verdadero } //codigo si esfalso
Para poder convertir este código usaremos las reglas de la lógica matemática A V V F F B V F V F AyB V F F F A V V F F B V F V F AoB F F F F

Como en la instrucción tenemos un AND usamos las reglas del AND: if(a > b) goto L1; goto L2; Ahora analicemos, si es verdadero, tendremos que analizar la siguiente condición, si no fuera verdadero, no necesitamos ir a verificar la siguienteinstrucción, entonces lo siguiente que escribimos es la etiqueta que es verdadera.

if(a > b) goto L1; goto L2; L1: if(b == 5) goto L3; goto L4;

Luego escribiremos la siguiente condición, y que pasa con una instrucción con un AND, si todas las condiciones resultan verdaderas, se ejecutaran las instrucciones dentro del if

Código intermedio y tabla de símbolos
Organización de lenguajes y...
tracking img