Descargar

Generación de Código No Optimizado

Enviado por Pablo Turmero


Partes: 1, 2

    edu.red

    Resumen Introducción Overview de un procesador moderno Lenguaje de Máquina Convenciones de Llamado Generación de Expresiones Generación de Control de Flujo Generación de Procedimientos Linking

    edu.red

    Anatomía de un Compilador Optimizador de Código Intermedio Generador de Código (Gp:) Representación Intermedia Optimizada

    (Gp:) Código en Assembler

    Generador de Código Intermedio (Gp:) Representación Intermedia

    Analizador Léxico (Scanner) Analizador Sintáctico (Parser) (Gp:) Token Stream

    Arbol de Parseo (Gp:) Programa (character stream)

    edu.red

    Anatomía de un Compilador Generador de Código Representación Intermedia (Gp:) Código en Assembler

    High-level IR Analizador Léxico (Scanner) Analizador Sintáctico (Parser) (Gp:) Token Stream

    Arbol de Parseo (Gp:) Programa (character stream)

    Low-level IR Generador de Código Intermedio

    edu.red

    Representación en Formato Intermedio while (i < v.length && v[i] != 0) { i = i+1; } entry ldl i len < cbr stl i exit ldf v lda 0 != cbr ldf v ldl i ldl i 0 +

    edu.red

    El Generador de Código debe… Traducir todas las instrucciones en la representación intermedia a lenguaje ensamblador Asignar espacio para variables, arreglos, etc. Adherirse a las convenciones de llamado Crear la información simbólica necesaria

    edu.red

    Resumen Introducción Resumen de un procesador moderno Lenguaje de Máquina Convenciones de Llamado Generación de Expresiones Generación de Control de Flujo Generación de Procedimientos Linking

    edu.red

    Resumen de un Procesador Moderno ALU Control Memoria Registros Memory Registers ALU Control

    edu.red

    Arithmetic and Logic Unit Hace la mayoría de operaciones Con forma:OP Rdest, Rsrc1, Rsrc2 Operaciones son: Operaciones aritméticas (add, sub, mul) Operaciones lógicas (and, sll) Operaciones de comparación (seq, sge, slt) Memory Registers Control ALU

    edu.red

    Arithmetic and Logic Unit Muchas operaciones aritméticas pueden causar una excepción overflow y underflow Puede operar en distintos tipos de datos 8, 16, 32 bits Aritmética con y sin signo Operaciones de punto flotante (ALU separada) Instrucciones para convertir entre formatos (cvt.s.d) Memory Registers Control ALU

    edu.red

    Control Maneja la secuencia de Instrucciones Ejecución de Instrucciones Todas las instrucciones están en memoria Fetch de la instrucción a la que apunta el PC y ejecutarla Para instrucciones generales, incrementar el PC para que apunte a la siguiente posición de memoria Memory Registers ALU Control

    edu.red

    Control Saltos no condicionales Fetch de la siguiente instrucción de una localidad diferente Salto incondicional a una dirección dada j label Salto incondicional a una dirección en un registro jr rsrc Para manejar llamadas a procedimientos, se hace un salto incondicional, pero se guarda la siguiente dirección en la secuencia actual en un registro jal label jalr rsrc Memory Registers ALU Control

    edu.red

    Control Saltos Condicionales Ejectuamos un test,si es éxitoso, fetch de instrucciones de una nueva dirección,de otra forma fetch de la siguiente instrucción Las instrucciones son de la forma: brelop Rsrc1, Rsrc2, label relop es de la forma: eq, ne, gt, ge, lt, le Memory Registers ALU Control

    edu.red

    Control Transferencia de control en casos especiales (raros) traps y excepciones Mecanismo Guardar la posición de la siguiente instrucción (o la actual) Encontrar la dirección a la que hay que saltar (de un vector de excepciones) Saltar a esa posición

    Memory Registers ALU Control

    edu.red

    Memory Espacio de Direcciones plano Compuesto de words Direccionable por bytes Necesitamos guardar Programa Variables locales Stack Heap Memory Registers ALU Control

    Partes: 1, 2
    Página siguiente