Anar a: Buscar
FIB > Els estudis > Pla 91 > Pàgines de les assignatures > Departament LSI > CL2 Castellano | English
A
AD
AED
AIA
AP
BDA
CL1
CL2
DBD
DLP
EA
EDA
ES:D1
ES:D2
ES:E
FBD
FP
FPC
GC
GPI
GSI
IBD
IEA
IIA
IL
IP
LGA
LPO
MAC
MFES
MGC
PC
PD
PGSI
PM
PP
R
RESI
SGBD
SIO
TC
TMIA
VRC



Compiladors II (CL2)

(http://www.lsi.upc.edu/~nivela)



Professors Responsables: M. PILAR NIVELA ALOS (nivelalsi.upc.edu)
Crèdits: 4.5 (3.0 T 0.0 P 1.5 L)

Departament: LSI

Tipus d'assignatura

Obligatoria de segon cicle per la EI
Optativa per la ETIG , ETIS

Requisits de l'assignatura

CL1 - Pre-correquisit per la EI , ETIG , ETIS


Objectius docents

Estudiar la fase de sintesi d'un compilador e implementar un
compilador per un llenguatge, anomenat CL, de la familia
Pascal/Modula-2

Programa

1. Introducció:
- Estructura conceptual i real d'un compilador. Fase de síntesi:

assignació de memòria, generació de codi, optimització

- El llenguatge font CL

- La Q-machine: estructura de la memòria, joc d'instruccions
2. Presentació de les eines ja implementades que s'utilitzen a l'assignatura:
- L'especificació lèxica i sintàctica pel llenguatge CL

- La taula de símbols: estructura i operacions

- La comprovació de tipus pel llenguatge CL: atributs sintetitzats i atributs heretats

- L'intèrpret de la Q-machine
3. Assignació de memòria:
- Assignació estàtica i dinàmica

- Assignació dinàmica en pila

- Estructura dels blocs d'activació per la Q-machine

- Accés a noms no locals per àmbit estàtic: cadenes estàtiques i displays

- Accés a noms no locals per àmbit dinàmic: cadenes dinàmiques

- Assignació de memòria per arrays estàtics. Assignació per arrays dinàmics: descriptors d'arrays

- Implementació del pas de procediments com a paràmetres d'altres procediments: descriptors de procediments

- Assignació dinàmica en heap: estratègies d'assignació (best-fit, first-fit i circular first-fit); estratègies de desassignació: explícita i implícita (referències úniques, comptadors de referències, garbage collection)

- Implementació de punters dinàmics
4. Generació de codi intermedi:
- Tipus de codi intermedi.

- Compilació de les construccions clàssiques dels llenguatges:

procediments i funcions, expressions, instrucció d'asignació, conversions implícites, accés a components d'arrays estàtics i dinàmics, instruccions iteratives,

condicional, lectura, escriptura, crida a procediments i funcions,

compilació eficient d'expressions booleanes, formal procedures.
5. Optimització de codi:
- Criteris d'optimització, fonts d'optimització, optimitzacions locals i globals.

- Optimitzacions locals: blocs bàsics i grafs de flux, simplificació d'expressions, precàlcul de constants, propagació de còpies, representació amb grafs dirigits acíclics dels blocs bàsics: eliminació de subexpressions comunes, eliminació de codi inactiu.

- Optimitzacions globals. Detecció de bucles: dominadors, grafs de flux reduibles. Optimització de bucles: detecció d'invariants i trasllat de codi, detecció de variables d'inducció i reducció d'intensitat. Anàlisi de flux de dades: ud-chaining, expressions disponibles, propagació de còpies, du-chaining, variables actives, expressions very-busy
6. Generació de codi objecte:
- Problemes de generació de codi objecte: generació d'instruccions, ordre de càlcul, ús de registres, adreces de les variables, tractament de les etiquetes.

- Un model de màquina objecte. Informació next-use, descriptors de registres, descriptors d'adreces. Un algorisme de generació de codi

- Optimitzacions: peephole, codi inaccessible, salts múltiples

Avaluació

Avaluació de la pràctica.
L'avaluació del treball pràctico a CL1 i CL2 es basarà
exclusivament en la realització d'un examen escrit.
Avaluació de l'assignatura.
La nota final F de l'assignatura es calcularà en funció dels
exàmens de la práctica P i de teoria T tal com segueix:
Sigui min=mínim(T,P).
If min>5 Then F:=(2T+P)/3 Else F:=(min/5)*(2T+P)/3.

Càrrega

Els 4.5 crèdits de l'assignatura es descomposen en 3 de teoria i 1.5
de laboratori, el que permet organitzar l'assignatura en dues hores
setmanals de classes teòriques i una hora setmanal de laboratori (per raons
d'aprofitament les hores de laboratori s'agrupen en blocs de dues hores
quinzenals).
A les classes de laboratori es fa un seguiment del desenvolupament
del treball pràctic de l'assignatura que consisteix en l'elaboració
d'un compilador pel llenguatge font CL.
La sortida d'aquest compialdor es un programa escrit en el llenguatge Q
(que és el codi executat per la Q-machine, una variació de la
P-machine utilitzada tradicionalment en les implementacions de Pascal).
Per tal de facilitar l'implementació del compilador l'estudiant té
al seu abast una implementació completa de l'anàlisi lèxic,
sintàctic i semàntic, a més d'un simulador (o intèrpret) de la Q-machine.
La reatlització d'aquest treball pràctic es individual i la seva
presentació requereix el funcionament correcte del compilador. Els
estudiants disposen d'uns jocs de prova públics per provar-lo.
Donat que a l'assignatura no hi ha classes de problemes es recomana a
l'estudiant la resolució de la llista de problemes de que disposa
cada quatrimestre.

Bibliografia

Bibliografia bàsica

- AHO, A.V.; ULLMAN, J.D Principles of Compiler Design Addison-Wesley, 1987
- FISHER, C.N.; LeBLANC Jr., R.J Crafting a Compiler The Benjamin Cummings Publ. Comp, 1988
- WILHELM, R.; MAURER, D. Compiler Design Addison-Wesley P. C. , 1995
- A. W. Appel Modern Compiler Implementation in C Cambridge University Press, 1998

Bibliografia complementària

- SCHREINER, A.T., FRIEDMAN Jr., H.G Introduction to Compiler Construction whit UNIX Prentice-Hall Inc. Englewook Cliffs, 1985
- WAITE, T., GOOS, G Compiler Construction Springer Verlag, 1984
- AHO, A.V., SETHI, R., ULLMAN, J. D. Compiladores, Principios, Tecnicas y Herramientas Addison Wesley Iberoamericana, 1990



versió per imprimir