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
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)
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
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
+
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
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
Resumen de un Procesador Moderno
ALU
Control
Memoria
Registros
Memory
Registers
ALU
Control
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
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
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
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
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
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
Memory
Espacio de Direcciones plano
Compuesto de words
Direccionable por bytes
Necesitamos guardar
Programa
Variables locales
Stack
Heap
Memory
Registers
ALU
Control
Página siguiente |