252-‑210: ¡Compiler ¡Design ¡ Fall ¡2015 ¡ Thomas ¡R. ¡Gross ¡ Computer ¡Science ¡Department ¡ ETH ¡Zurich, ¡Switzerland ¡
Rule ¡1 ¡ ¡ ¡ Peace ¡in ¡the ¡lecture ¡hall ¡ ¡ ¡ 4 ¡
Course ¡structure ¡ You ¡will ¡not ¡learn ¡this ¡material ¡from ¡lectures ¡alone ¡ Homework ¡essenDal ¡ 10 ¡
Homework ¡ Core ¡element ¡of ¡the ¡course ¡ You ¡will ¡build ¡a ¡compiler ¡ More ¡on ¡this ¡topic ¡(organizaDon, ¡constraints, ¡etc) ¡tomorrow ¡ 11 ¡
1.0 ¡IntroducDon ¡ A ¡compiler ¡translates ¡a ¡program ¡wri[en ¡in ¡(programming) ¡ language ¡L 1 ¡into ¡(programming) ¡language ¡L 2 . ¡ Compilers ¡are ¡programs ¡ Implemented ¡in ¡some ¡programming ¡language ¡P ¡ Compilers ¡transform ¡programs ¡ Many ¡other ¡programs ¡include ¡(small) ¡compilers ¡ 16 ¡
ObservaDons ¡ Languages ¡are ¡important ¡ Source ¡language ¡L 1 ¡ Target ¡language ¡L 2 ¡ Host ¡language ¡P ¡ ¡ Programs ¡can ¡be ¡“executed” ¡ Program ¡is ¡a ¡sequence ¡of ¡expressions ¡ ¡E 1 , ¡E 2 , ¡… ¡ A ¡processor ¡contains ¡state ¡ Each ¡expression ¡E i ¡may ¡read ¡state, ¡modify ¡state, ¡and ¡determine ¡next ¡ expression ¡E j ¡– ¡expression ¡execu+on ¡ A ¡special ¡expression ¡E stop ¡indicates ¡that ¡program ¡execu+on ¡stops ¡ 17 ¡
Program ¡execuDon ¡ ExecuDon ¡(“elaboraDon”) ¡of ¡expressions ¡ ¡E 1 , ¡E 2 , ¡… ¡by ¡some ¡ machine ¡M ¡ Machine ¡M ¡defined ¡by ¡soVware ¡– ¡“virtual ¡machine” ¡ M ¡executed ¡L 1 ¡(or ¡L 2 ) ¡ Machine ¡realized ¡by ¡hardware ¡– ¡physical ¡processor ¡ …. ¡ Expressions ¡ ¡E 1 , ¡E 2 , ¡… ¡also ¡referred ¡to ¡as ¡“statements” ¡or ¡ “operaDons” ¡ ElaboraDon ¡someDmes ¡referred ¡to ¡as ¡ interpreta/on ¡ The ¡word ¡interpreta+on ¡some+mes ¡hints ¡at ¡“direct ¡execu+on” ¡ ¡ 18 ¡
Issues ¡ ¡ Choices ¡for ¡L 1 ¡and ¡L 2 ¡ 19 ¡
Issues ¡ ¡ Choices ¡for ¡L 1 ¡and ¡L 2 ¡ Program ¡wriZen ¡in ¡L 1 ¡(P L1 ) ¡translated ¡into ¡program ¡wriZen ¡in ¡ ¡L 2 ¡(P L2 ) ¡ ¡P L1 ¡ ¡P L2 ¡ Aspects ¡of ¡translaDon ¡of ¡programs ¡P L1 ¡ ¡P L2 ¡ When ¡does ¡it ¡mean ¡that ¡P L1 ¡is ¡a ¡“transla+on” ¡of ¡P L2 ¡ P L1 ¡should ¡produce ¡the ¡“same” ¡result ¡as ¡P L2 ¡ 24 ¡
SemanDcs ¡ Describes ¡the ¡“meaning” ¡of ¡programs ¡ Meaning ¡of ¡program ¡defined ¡by ¡meaning ¡of ¡statements ¡or ¡ operaDons ¡ Opera+onal ¡seman+cs ¡ Abstract ¡machine ¡ ¡A ¡ Sequences ¡of ¡ ¡steps ¡interpreted ¡ ¡(“elabora+on”) ¡– ¡effect ¡on ¡A ¡determines ¡meaning ¡ Denota+onal ¡seman+cs ¡ Mathema+cal ¡construct ¡describes ¡effect ¡– ¡can ¡be ¡manipulated ¡(composi+on, ¡ projec+on, ¡…) ¡ Axioma+c ¡seman+cs ¡ Asser+ons ¡on ¡program ¡state ¡and ¡rules ¡that ¡describe ¡the ¡effect ¡of ¡opera+ons ¡ 25 ¡
SemanDcs ¡ Translated ¡(target) ¡programs ¡P L2 ¡ has ¡the ¡same ¡meaning ¡as ¡ the ¡(source) ¡program ¡P L1 ¡ At ¡least: ¡computes ¡the ¡same ¡result(s) ¡for ¡all ¡legal ¡inputs ¡ Same: ¡must ¡be ¡defined ¡... ¡ ¡ What ¡about ¡illegal ¡inputs? ¡ What ¡about ¡non-‑funcDonal ¡properDes? ¡ 27 ¡
ComplicaDons ¡ L 1 ¡and ¡L 2 ¡have ¡different ¡resource ¡models ¡ L 1 : ¡ ¡no ¡limit ¡on ¡resources, ¡flexible ¡descripDon ¡ L 2 : ¡finite ¡resources, ¡inflexible ¡descripDon, ¡hardware-‑based ¡ 32 ¡
ComplicaDons ¡ L1: ¡ ¡no ¡limit ¡on ¡resources ¡ L2: ¡finite ¡resources, ¡ inflexible ¡descripDon, ¡ ∞ ¡number ¡of ¡variables ¡ hardware-‑based ¡ ∞ ¡lines ¡of ¡code ¡ Fixed ¡number ¡of ¡registers ¡ ∞ ¡number ¡of ¡methods ¡ Limited ¡storage ¡ ∞ ¡data ¡space ¡ Finite ¡representa+on ¡ ∞ ¡nes+ng ¡ Machine ¡proper+es ¡maZer ¡ ∞ ¡characters ¡in ¡var ¡name ¡ Caches ¡ TLBs ¡ NUMA ¡ … ¡ 33 ¡
Compiler ¡task: ¡Translate ¡P L1 ¡ ¡P L2 ¡ Management ¡of ¡resources ¡ PreservaDon ¡of ¡semanDcs ¡ Is ¡meaning ¡defined? ¡ For ¡all ¡possible ¡inputs? ¡ Check ¡constraints ¡on ¡P L1 ¡ Not ¡every ¡program ¡can ¡be ¡translated ¡ Not ¡every ¡aspect ¡can ¡be ¡checked ¡by ¡compiler ¡ Escape: ¡compiler ¡inserts ¡code ¡into ¡P L2 ¡to ¡check ¡proper+es ¡of ¡program ¡ during ¡execu+on ¡(“at ¡run+me”) ¡ 34 ¡
Recommend
More recommend