CTH: TDA 280 (4.0p) |
GU: INN 300 (5p) |
Välkommen | Lärare | Kurslitteratur | Veckoschema | Kompilatorprojekt | Elrapport | Leksaker | Länkar |
---|---|---|---|---|---|---|---|
Preliminära läsanvisningarAllmäntFör att få en uppfattning om vad som är viktigt i kursen är det lämpligt att titta på OH-bilderna från föreläsningarna och övningsuppgifterna från övningarna. Det finns länkar till dessa i veckoschemat.Tänk även på att det som presenterats på föreläsningar ingår i kursen även om det inte har ett motsvarande kapitel i boken! Kapitel i bokenDetta avser kursboken Modern Compiler Implementation in ML,1 IntroductionGer överblick och lägger grunden för resten av boken. Läs igenom.2 Lexical AnalysisAvsnitt: Lexical tokens. Regular expressions. Finite automata. Nondeterministic Finite Automata.Ska känna till reguljäruttryck, hur man skapar en ickedeterministik ändlig automat (NFA) och hur man gör om den till en deterministisk automat (DFA) mha delmängsmetoden (som vi använt på föreläsningar och övningar). Ska känna till hur man använder en lexikalanalysatorgenerator (t ex Alex). 3 ParsingAvsnitt: Context-free grammars. Predictive Parsing. LR Parsing. Using parser generators.Ska veta vad som menas med vänster(höger)rekursion, vänsterfaktorisering, LL(k), LR(k), SLR, LALR. Ska veta hur man genererar punktproduktionsmängder och LR-parsningstabeller Ska känna till hur man använder en parsergenerator (t ex Happy). Hoppa över avsnitten om felhantering (error recovery). 4 Abstract SyntaxAvsnitt: Semantic actions. Abstract parse trees, ej "abstract syntax for TIGER"Ska veta hur man bygger abstrakta syntaxträd med en parsergenerator. 5 Type CheckingAvsnitt: Symbol tables. Type-checking expressions. Type-checking declarations.Ej de delar som bara rör Tiger-kompilatorn. Dessutom TILLKOMMER det jag sagt om typsystem på föreläsning, se OH-bilderna för detta. 6 Activation RecordsVIKTIG! Skall ha ett gott grepp om vad en aktiveringspost är, varför den finns, vad den innehåller.7 Translation to Intermediate CodeVi har inte använt metoden med att gå via en trädrepresentation av mellankoden, utan går direkt till stack eller 3-adresskod. Skumma kapitlet. Koncentrera er på att förstå och formulera kompilerings- schemor istället.8 Basic Blocks and TracesBasic block är VIKTIGT!9 Instruction SelectionLäs igenom. Är rätt trivialt för moderna RISC-maskiner.10 Liveness AnalysisVIKTIG! Skall kunna, samt även veta vad resultatet kan användas till.11 Register AllocationVIKTIG! Skall kunna graffärgningsalgoritmen.12 Putting It All TogetherSkippa13 Garbage collectionKänna till begrepp, och ha en översikt.14 Object-Oriented LanguagesKänna till begrepp, och ha en översikt.15 Functional Programming LanguagesKänna till begrepp, och ha en översikt.17 Dataflow AnalysisVIKTIG!18 Loop OptimizationsVIKTIG! Behöver inte kunna alla algoritmer i deltalj, men känna till vad som finns och förklara vad de gör.19 SSAVeta vad SSA är, varför det är bra. Förstå phi-noder, vad de gör och varför de behövs.20 Pipelining and SchedulingKommer troligtvis utlämnas ur kursen. Men hinner jag med det så ...21 Memory HierarchyKänna till hur minnet är organiserat (cache, primärminne disk). I övrigt mest översiktligt. |