1introduction
1.1languageprocessors
1.2thestructureofacompiler
1.3theevolutionofprogramminglanguages
1.4thescienceofbuildingacompiler
1.5applicationsofcompilertechnology
1.6programminglanguagebasics
1.7summaryofchapter1
1.8referencesforchapter1
2asimplesyntax-directedtranslator
2.1introduction
2.2syntaxdefinition
2.3syntax-directedtranslation
2.4parsing
2.5atranslatorforsimpleexpressions
2.6lexicalanalysis
2.7symboltables
2.8intermediatecodegeneration
2.9summaryofchapter2
3lexicalanalysis
3.1theroleofthelexicalanalyzer
3.2inputbuffering
3.3specificationoftokens
3.4recognitionoftokens
3.5thelexical-analyzergeneratorlex
3.6finiteautomata
3.7fromregularexpressionstoautomata
3.8designofalexical-analyzergenerator
3.9optimizationofdfa-basedpatternmatchers
3.10summaryofchapter3
3.11referencesforchapter3
4syntaxanalysis
4.1introduction
4.2context-freegrammars
4.3writingagrammar
4.4top-downparsing
4.5bottom-upparsing
4.6introductiontolrparsing:simplelr
4.7morepowerfullrparsers
4.8usingambiguousgrammars
4.9parsergenerators
4.10summaryofchapter4
4.11referencesforchapter4
5syntax-directedtranslation
5.1syntax-directeddefinitions
5.2evaluationordersforsdd's
5.3applicationsofsyntax-directedtranslation
5.4syntax-directedtranslationschemes
5.5hnplementingl-attributedsdd's
5.6summaryofchapter5
5.7referencesforchapter5
6intermediate-codegeneration
6.1variantsofsyntaxtrees
6.2three-addresscode
6.3typesanddeclarations
6.4translationofexpressions
6.5typechecking
6.6controlflow
6.7backpatching
6.8switch-statements
6.9intermediatecodeforprocedures
6.10summaryofchapter6
6.11referencesforchapter6
7run-timeenvironments
7.1storageorganization
7.2stackallocationofspace
7.3accesstononlocaldataonthestack
7.4heapmanagement
7.5introductiontogarbagecollection
7.6introductiontotrace-basedcollection
7.7short-pausegarbagecollection
7.8advancedtopicsingarbagecollection
7.9summaryofchapter7
7.10referencesforchapter7
8codegeneration
8.1issuesmthedesignofacodegenerator
8.2thetargetlanguage
8.3addressesinthetargetcode
8.4basicblocksandflowgraphs
8.5optimizationofbasicblocks
8.6asimplecodegenerator
8.7peepholeoptimization
8.8registerallocationandassignment
8.9instructionselectionbytreerewriting
8.10optimalcodegenerationforexpressions
8.11dynamicprogrammingcode-generation
8.12summaryofchapter8
8.13referencesforchapter8
9machine-independentoptimizations
9.1theprincipalsourcesofoptimization
9.2introductiontodata-flowanalysis
9.3foundationsofdata-flowanalysis
9.4constantpropagation
9.5partial-redundancyelimination
9.6loopsinflowgraphs
9.7region-basedanalysis
9.8symbolicanalysis
9.9summaryofchapter9
9.10referencesforchapter9
10instruction-levelparallelism
10.1processorarchitectures
10.2code-schedulingconstraints
10.3basic-blockscheduling
10.4globalcodescheduling
10.5softwarepipelining
10.6summaryofchapter10
10.7referencesforchapter10
11optimizingforparallelismandlocality
11.1basicconcepts
11.2matrixmultiply:anin-depthexample
11.3iterationspaces
11.4aftlnearrayindexes
11.5datareuse
11.6arraydata-dependenceanalysis
11.7findingsynchronization-freeparallelism
11.8synchronizationbetweenparallelloops
11.9pipelining
11.10localityoptimizations
11.11otherusesofaffinetransforms
11.12summarvofchapter11
11.13referencesforchapter11
12interproceduralanalysis
12.1basicconcepts
12.2whyinterproceduralanalysis?
12.3alogicalrepresentationofdataflow
12.4asimplepointer-analysisalgorithm
12.5context-insensitiveinterproceduralanalysis
12.6context-sensitivepointeranalysis
12.7datalogimplementationbybdd's
12.8summaryofchapter12
12.9referencesforchapter12
aacompletefrontend
a.1thesourcelanguage
a.2main
a.3lexicalanalyzer
a.4symboltablesandtypes
a.5intermediatecodeforexpressions
a.6jumpingcodeforbooleanexpressions
a.7intermediatecodeforstatements
a.8parser
a.9creatingthefrontend
bfindinglinearlyindependentsolutions
index