UNIDAD 2_AUTOMATAS.pdf

Embed Size (px)

Citation preview

  • 5/26/2018 UNIDAD 2_AUTOMATAS.pdf

    1/58

    GENERACIN DE CDIGOINTERMEDIO

    UNIDAD II

  • 5/26/2018 UNIDAD 2_AUTOMATAS.pdf

    2/58

    COMPILADORES TEORA E IMPLEMENTACION JACINTO RUIZ CATALN ALFAOMEGA

    CONSTRUCCION DE COMPILADORES PRINCIPIOS YPRACTICA KENNETH C. LOUDEN THOMSON EDITORES

    TRADUCTORES Y COMPILADORES CON LEX YACCJFLEX CUP Y JAVACC SERGIO GALVES ROJAS MIGUEL ANGEL MORA MATA

  • 5/26/2018 UNIDAD 2_AUTOMATAS.pdf

    3/58

    Analizar una mquina virtual que ejecute

    cdigo intermedio a partir del cdigo fuente

    de un lenguaje prototipo.

  • 5/26/2018 UNIDAD 2_AUTOMATAS.pdf

    4/58

    2.1 Notaciones

    2.1.1 Prefija 2.1.2 Infija 2.2.3 Postfija

    2.2 Representaciones de cdigo Intermedio. 2.2.1 Notacin Polaca 2.2.2 Cdigo P 2.2.3 Triplos 2.2.4 Cudruplos.

    2.3 Esquema de generacin. 2.3.1 Variables y constantes. 2.3.2 Expresiones. 2.3.3 Instruccin de asignacin. 2.3.4 Instrucciones de control. 2.3.5 Funciones 2.3.6 Estructuras

  • 5/26/2018 UNIDAD 2_AUTOMATAS.pdf

    5/58

    CODIGO FUENTE

    FRONT

    END

    ANALISIS LEXICO

    ANALISISSINTACTICO

    ANALISISSEMANTICO

    Fases dependientes del lenguajeFuente e independientes de la

    Maquina final

    GENERACIN DECODIGO

    INTERMEDIO

    CODIGO INTERMEDIO

    BACKEND

    OPTIMIZACION DECODIGO

    INTERMEDIO

    GENERACION DECODIGO FINAL

    OPTIMIZACIN DECODIGO FINAL

    CODIGO FINAL /EJECUTABLE

    Fases independientes del lenguajeFuente pero dependientes del cdigo

    Intermedio y de la maquina final

  • 5/26/2018 UNIDAD 2_AUTOMATAS.pdf

    6/58

    Diferencia entre cdigo fuente y cdigoejecutable.

    Diferencia entre cdigo interpretable y

    cdigo ejecutable nativo.

    Obtencin de cdigo ejecutable.

  • 5/26/2018 UNIDAD 2_AUTOMATAS.pdf

    7/58

    Arquitectura bsica de Von Neumann

    En la memoria se almacena el programa y los datos necesariospara que ste opere

    Instrucciones del procesador

    Son las instrucciones bsicas que puede realizar la UCP.Con ellas se construyen los programas que puede entender la UCPcdigomquina

    Cada instruccin bsica instruccin mquina se especificamediante un cdigo de instruccin junto con la informacin sobre

    cmo obtener los operandos necesarios. Todo ello conforma elformatode instruccin.

    FORMATO DE INSTRUCCIN

    operador operando1 operando2

  • 5/26/2018 UNIDAD 2_AUTOMATAS.pdf

    8/58

    Unidad Central de Proceso CPU

    Componente encargado de ejecutar lasinstrucciones que estn en memoria principal.

    Capaz de ejecutar millones de instrucciones MHz

  • 5/26/2018 UNIDAD 2_AUTOMATAS.pdf

    9/58

    Las instrucciones de los programas sonalmacenados en la memoria primaria. Laprimer tarea del CPU es leer una instruccinde la memoria.

    ELPROC

    ESADOR

  • 5/26/2018 UNIDAD 2_AUTOMATAS.pdf

    10/58

    La unidad Prefetch le indica al bus queinstruccin o conjunto de instrucciones tieneque leer (direcciones de memoria).

    Prelectura de la instruccin desde lamemoria principal.

    ELPROC

    ESADOR

  • 5/26/2018 UNIDAD 2_AUTOMATAS.pdf

    11/58

    La Unidad de Decodificacin toma lasinstrucciones ledas y las traslada a unaforma adecuada para el procesamiento

    interno de CPU.operador operando1 operando2

    ELPROC

    ESADOR

    FORMATO DE INSTRUCCIN

  • 5/26/2018 UNIDAD 2_AUTOMATAS.pdf

    12/58

    La Unidad de Control coordina y organizacuales elementos del CPU realizarn

    funciones.

    ELPROC

    ESADOR

  • 5/26/2018 UNIDAD 2_AUTOMATAS.pdf

    13/58

    La Unidad Aritmtico Lgica (Logic Unit) seencarga de ejecutar las operacionescorrespondientes. Incluye registros de 32 o

    64 bits generalmente.

    ELPROC

    ESADOR

  • 5/26/2018 UNIDAD 2_AUTOMATAS.pdf

    14/58

    Creacin y ejecucin de programas en cdigonativo (Lenguaje C)

    Archivo de texto escritopor el programador

  • 5/26/2018 UNIDAD 2_AUTOMATAS.pdf

    15/58

    Ejecucin de cdigo intermedio (interpretado) Creacin y ejecucin de programas en cdigo

    interpretado. (Java) Bite Code

    hola.class

  • 5/26/2018 UNIDAD 2_AUTOMATAS.pdf

    16/58

    El cdigo intermedio (CI) es larepresentacin en un lenguaje sencillo de lasecuencia real de las operaciones que seharn como resultado de las fases anteriores.

    Se trata de representar de una maneraformalizada las operaciones a llevar a cabo

    en un lenguaje ms cercano a la mquinafinal, aunque no a una mquina concreta sino a una mquina abstracta.

  • 5/26/2018 UNIDAD 2_AUTOMATAS.pdf

    17/58

    Ventajas del cdigo intermedio

    Aumenta la portabilidad delcompilador de una mquina a otra.

    EJEMPLO Java

    Fcil de producir. Reglas claras de construccin. Fcil de traducir al lenguaje objeto.

  • 5/26/2018 UNIDAD 2_AUTOMATAS.pdf

    18/58

  • 5/26/2018 UNIDAD 2_AUTOMATAS.pdf

    19/58

    Las notaciones son una forma especial en laque se pueden expresar una expresinmatemtica y puedan ser de 3 formas:infija, prefija y posfija.

    Los prefijos, Pre - Pos - In se refieren a laposicin relativa del operador con respecto alos dos operandos.

    a + b

    Operando Operador Operando

  • 5/26/2018 UNIDAD 2_AUTOMATAS.pdf

    20/58

    La caracterstica distintiva de esta notacines que coloca los operadores a la izquierdade sus operandos.

    2+3

    + 2 3

    No requiere de parntesis para indicar elorden de precedencia de operadores.

    Se evala de izquierda a derecha hasta quese encuentre el primer operador seguidoinmediatamente de un par de operandos.

  • 5/26/2018 UNIDAD 2_AUTOMATAS.pdf

    21/58

    (3*6)/ (2+4)EVALUACIN

    LECTURA FINAL

  • 5/26/2018 UNIDAD 2_AUTOMATAS.pdf

    22/58

    / * 3 6 + 2 4EVALUACIN

  • 5/26/2018 UNIDAD 2_AUTOMATAS.pdf

    23/58

    (3*6)/ (2+4)4 2 + 6 3 * /

    ) )

    +

    E / /

    )

    /

    *

    E

    EVALUACIN

    LECTURA FINAL /*36+24

  • 5/26/2018 UNIDAD 2_AUTOMATAS.pdf

    24/58

    4 4

    2

    6 6

    6

    6

    6

    3

    6

    18

    3

    / * 3 6 + 2 4

    2+4 3*6 18/6

    EVALUACIN

  • 5/26/2018 UNIDAD 2_AUTOMATAS.pdf

    25/58

    Nodo, Hijo_izquierdo, Hijo_derechoexpexp op exp|num

    (3*6)/ (2+4)

    *

    3 6

    /

    +

    2 4

    /*36+24

  • 5/26/2018 UNIDAD 2_AUTOMATAS.pdf

    26/58

    Es la notacin comn defrmulas aritmticas y lgicas, en la cual seescriben los operadores entre los operandosen que estn actuando:

    2 + 2No es tan simple de analizar por las

    computadoras, como la notacin prefija o

    la notacin postfija, aunque muchoslenguajes de programacin la utilizan debidoa su familiaridad.

  • 5/26/2018 UNIDAD 2_AUTOMATAS.pdf

    27/58

    Hijo_izquierdo, Nodo, Hijo_derechoexpexp op exp|num

    (3*6)/ (2+4)

    *

    3 6

    /

    +

    2 4

    3*6 / 2+4

  • 5/26/2018 UNIDAD 2_AUTOMATAS.pdf

    28/58

    Se refiere a que el operador ocupa la posicin

    despus de los operandos.

    S = A + B * CS A B C * + =

    Su principio es el de evaluar los datosdirectamente cuando se introducen y manejarlosdentro de una estructura LIFO (Last In First Out),

    lo que optimiza los procesos a la hora deprogramar.

  • 5/26/2018 UNIDAD 2_AUTOMATAS.pdf

    29/58

    EVALUACIN

    LECTURA FINAL

    (3*6)/ (2+4)

  • 5/26/2018 UNIDAD 2_AUTOMATAS.pdf

    30/58

    EVALUACIN

    3 6 * 2 4 + /

  • 5/26/2018 UNIDAD 2_AUTOMATAS.pdf

    31/58

    (3*6)/ (2+4)

    3 6 * 2 4 + /

    ( (

    *

    / /

    (

    /

    (

    +

    E E

    EVALUACIN

    LECTURA FINAL 36*24+/

  • 5/26/2018 UNIDAD 2_AUTOMATAS.pdf

    32/58

    3 3

    6

    18 18

    2

    18

    2

    4

    18

    6

    3

    3 6 * 2 4 + /EVALUACIN

    3*6 4+2 18/6

  • 5/26/2018 UNIDAD 2_AUTOMATAS.pdf

    33/58

    Hijo_izquierdo, Hijo_derecho, Nodoexpexp op exp|num

    (3*6)/ (2+4)

    *

    3 6

    /

    +

    2 4

    3 6 * 2 4 + /

  • 5/26/2018 UNIDAD 2_AUTOMATAS.pdf

    34/58

    Generacin de cdigo: Simple No utiliza registros

    Optimizacin Es difcil de reordenar ya que hay que considerar

    el contenido de la pila (Polaca Inversa) Interpretacin rpida Es muy fcil de interpretar ya que solo necesita

    una pila Transportable: Si, ya que todos los procesadores implementan

    una pila.

  • 5/26/2018 UNIDAD 2_AUTOMATAS.pdf

    35/58

  • 5/26/2018 UNIDAD 2_AUTOMATAS.pdf

    36/58

    if then else No se puede traducir a

    If

    Cdigo generadoSalta Si falso Etiqueta1

    Salta Etiqueta2Etiqueta1:

    Su principio es el de evaluar los datos directamente cuando se introduceny manejarlos dentro de una estructura LIFO (Last In First Out), lo que optimizalos procesos.

  • 5/26/2018 UNIDAD 2_AUTOMATAS.pdf

    37/58

    Es una especificacin de una Unidad Central

    de Procesamiento donde las instruccionesestn diseadas a ser ejecutadas porsoftware (interpretadas) en lugar deHardware.

  • 5/26/2018 UNIDAD 2_AUTOMATAS.pdf

    38/58

    El cdigo P comenz como un cdigoensamblador objetivo estndar producido porvarios compiladores Pascal en la dcada de

    1970.

    Fue diseado para una maquina de pilahipottica la idea era hacer que loscompiladores de Pascal se transportaranfcilmente.

  • 5/26/2018 UNIDAD 2_AUTOMATAS.pdf

    39/58

    En la creacin de cdigo intermedio se utilizaninstrucciones simblicas para representar losdatos (variables, parmetros, etc.) queposteriormente se trasladarn a direcciones

    reales en el mapa fsico de memoria.

  • 5/26/2018 UNIDAD 2_AUTOMATAS.pdf

    40/58

    Cada instruccin de tres direcciones tiene a lo

    sumo un operador.

    El compilador debe generar un nombre temporal

    para guardar los valores calculados por cadainstruccin.

    Algunas instrucciones de "tres direcciones" tienemenos de tres operadores.

  • 5/26/2018 UNIDAD 2_AUTOMATAS.pdf

    41/58

    CudruplosTriplos

  • 5/26/2018 UNIDAD 2_AUTOMATAS.pdf

    42/58

    Ejemplo:

    x=x+1; //Supongamos que x representa un entero

    Pasos para generar el CI

    R1= valor (x)

    R2= valor (1)

    R3= R1 + R2

    x=R3

    CODIGO DE TRES DIRECCIONES

    CARGAR x null R1 CARGAR 1 null R2 SUMAR R1 R2 R3 CARGAR R3 null x

    CDIGOD

    ETRESDIRECCI

    ONES

  • 5/26/2018 UNIDAD 2_AUTOMATAS.pdf

    43/58

    int x

    main(){x=0;x=x+1;

    }

    CARGAR 0 null 10000CARGAR 10000 null 9000

    CARGAR 9000 null 10001CARGAR 1 null 10002SUMAR 10001 10002 10003

    CARGAR 10003 null 9000 CDIGOSDET

    RESDIRECC

    IONES

    posteriormente setrasladarn a direccionesreales en el mapa fsico dememoria

    CI

    CARGAR x null R1 CARGAR 0 null R1 CARGAR 1 null R2 SUMAR R1 R2 R3 CARGAR R3 null x

    OTROS ARGUMENTOS DEL CI

  • 5/26/2018 UNIDAD 2_AUTOMATAS.pdf

    44/58

    OTROS ARGUMENTOS DEL CI

    RESTAR, MULTIPLICAR, DIVIDIR

    OR, AND

    MAYOR, MENOR (Si se cumple coloca 1 en el res) IGUAL, DISTINTO

    ETIQUETA

    Salto incondicional SALTAR_ETIQUETA null null etiq

    Saltos condicionales SALTAR_CONDICION op1 null etiq //SOLO SI ES FALSA

    IMPRIMIR_ENTERO 7 null null

    IMPRIMIR_CADENA cad null null

    Llamada al procedimiento p(x 1,x 2,...,x n). paramx1

    ...

    paramxn

    Call p,n

    EL CI es muy prximo a un lenguaje ensamblador

  • 5/26/2018 UNIDAD 2_AUTOMATAS.pdf

    45/58

    If a

  • 5/26/2018 UNIDAD 2_AUTOMATAS.pdf

    46/58

    , ,

    El resultado se asocia al nmero de tripleta

    Ejemplo: W*X+(Y+Z)

    1( *, W, X)

    2( +, Y, Z)3 (+, (1), (2))

  • 5/26/2018 UNIDAD 2_AUTOMATAS.pdf

    47/58

    Control de flujo:

    IF X>Y THEN Z=X ELSE Z=Y+11 (>, X, Y)2 (Saltar si falso, (1), 5)3 (=, Z, X)

    4 (Saltar, , 7)5 (+, Y, 1)6. (=, Z, (5))7. ...

  • 5/26/2018 UNIDAD 2_AUTOMATAS.pdf

    48/58

    SI FALSO

  • 5/26/2018 UNIDAD 2_AUTOMATAS.pdf

    49/58

  • 5/26/2018 UNIDAD 2_AUTOMATAS.pdf

    50/58

    EJERCICIO:A=B+C*D/EF=C*D

    Operaciones Tripletas1. (1) (1) *, C, D2. (2) (2) /, (1), E3. (3) (3) +, B (2)4. (4) (4) =, A, (3)

    5. (1) (5) =, F, (1)6. (5)

  • 5/26/2018 UNIDAD 2_AUTOMATAS.pdf

    51/58

    Los cuartetos son la herramienta ms general InconvenientesOcupan demasiado espacio Requieren muchas variables auxiliares para almacenar

    los resultados intermedios Los tercetos resuelven este problema

    suprimiendo el operando del resultado, quedaimplcito y asociado a dicho terceto

    Inconvenientes La optimizacin supone mover tripletas y hay que

    recalcular las referencias

  • 5/26/2018 UNIDAD 2_AUTOMATAS.pdf

    52/58

    int x 10;

  • 5/26/2018 UNIDAD 2_AUTOMATAS.pdf

    53/58

    int x = 10;

    int y = 0;

    main(){

    while(x>0){

    y =y+x;

    x=x-1;

    }

    print(Si leer);

    if(x==0 && y>54){print(Si leer);

    }else{

    print(No leer);

    }

    }

    CARGAR 10 null 10001CARGAR 0 null 10002ETIQUETA null null BUCLE_1CARGAR 10001 null 10003

    CARGAR 0 null 10004MAYOR 10003 10004 10005SALTAR_CONDICION 10005 null FIN_BUCLE_1CARGAR 10002 null 10006CARGAR 10001 null 10007SUMAR 10006 10007 10008

    CARGAR 10008 null 10002CARGAR 10001 null 10009CARGAR 1null 10010RESTAR 10009 10010 10011CARGAR 10011 null 10001SALTAR_ETIQUETA null null BUCLE_1

    ETIQUETA null null FINBUCLE_1IMPRIMIR_CADENA cadena1 null null

    int x = 10;

  • 5/26/2018 UNIDAD 2_AUTOMATAS.pdf

    54/58

    CARGAR 10001 null 10013CARGAR 0 null10014IGUAL 10013 10014 10015CARGAR 10002 null 10016CARGAR 54 null10017MAYOR 10016 10017 10018

    AND 10015 10018 10019SALTAR_CONDICION 10019 null ELSE_1IMPRIMIR_CADENA cadena2 null nullETIQUETA null null ELSE_1IMPRIMIR_CADENA cadena3 null null

    int x = 10;

    int y = 0;

    main(){

    while(x>0){

    y =y+x;

    x=x-1;

    }

    print(Si leer);

    if(x==0 && y>54){print(Si leer);

    }else{

    print(No leer);

    }

    }

    CARGAR 10 null 10001

  • 5/26/2018 UNIDAD 2_AUTOMATAS.pdf

    55/58

    int x=10;

    int y=20;

    while (x*2x*4){

    x=x+1;

    }

    }

    CARGAR 20 null 10002ETIQUETA null null BUCLE_1CARGAR 10001 null 10003CARGAR 2 null 10004

    MULTIPLICAR 10003 10004 10005CARGAR 10002 null 10006MENOR 10005 10006 10007SALTAR_CONDICION 10007 null FIN_BUCLE_1ETIQUETA null null BUCLE_2CARGAR 10002 null 10008

    CARGAR 10001 null 10009CARGAR 4 null 10010MULTIPLICAR 10009 10010 10011MAYOR 10008 10011 10012SALTAR_CONDICION 10012 null FIN_BUCLE_2CARGAR 10001 null 10013

    CARGAR 1 null 10014SUMAR 10013 10014 10015CARGAR 10001 null 10015SALTAR_ETIQUETA null null BUCLE_2SALTAR_ETIQUETA null null BUCLE_1ETIQUETA null null FIN_BUCLE_2ETIQUETA null null FIN_BUCLE_1

    int x=1-12;TAREA

  • 5/26/2018 UNIDAD 2_AUTOMATAS.pdf

    56/58

    ;int y=x*32main(){

    x=1-12;y=x*32;x=(32/12)*y;

    if(x>7){

    while(y>0){y=y-1;if(y>1){print(y);}

    }}

    }

    TAREACUADRUPLOSY TRIPLOS

  • 5/26/2018 UNIDAD 2_AUTOMATAS.pdf

    57/58

    COMPILADORES TEORA E IMPLEMENTACION JACINTO RUIZ CATALN ALFAOMEGA

    CONSTRUCCION DE COMPILADORES PRINCIPIOS YPRACTICA KENNETH C. LOUDEN THOMSON EDITORES

    TRADUCTORES Y COMPILADORES CON LEX YACCJFLEX CUP Y JAVACC SERGIO GALVES ROJAS MIGUEL ANGEL MORA MATA

  • 5/26/2018 UNIDAD 2_AUTOMATAS.pdf

    58/58

    GENERACIN DE CDIGOINTERMEDIO.

    UNIDAD II