320 likes | 438 Views
Language Levels and Translation. http://www.pds.ewi.tudelft.nl/~iosup/Courses/2012_ti1400_Reader.ppt. See also: Blackboard >> Course Material >> Reader (Dictaat) http://www.pds.ewi.tudelft.nl/vakken/in1705/cos2007.pdf. IT Industry Competitiveness. Q: Good/Bad news for you ?.
E N D
Language Levelsand Translation http://www.pds.ewi.tudelft.nl/~iosup/Courses/2012_ti1400_Reader.ppt See also: Blackboard >> Course Material >> Reader (Dictaat) http://www.pds.ewi.tudelft.nl/vakken/in1705/cos2007.pdf
IT Industry Competitiveness Q: Good/Bad news for you? NL only Top-20, see 2011 index Source: The Economist, Benchmarking IT industry competitiveness 2009 http://portal.bsa.org/2009eiu/study/2009_eiu_global.pdf
The Netherlands: A Top IT Industry Source: The Economist, Benchmarking IT industry competitiveness 2009 http://portal.bsa.org/2009eiu/study/2009_eiu_global.pdf
But … Where’s the Human Capital? Q: Good/Bad news for you? “A longer-term challenge for some European countries is encouraging more graduates to choose science-related subjects.” • NL is 27th in HC Source: The Economist, Benchmarking IT industry competitiveness 2009
The Simplest(?) Problem: How to Program Computers? • So far • Design them from scratch • Assembly • This lecture • Language levels • Translation • The compiler sequence
Language levels • A computer has severallanguage levels: • machine language • assembler language (e.g., Intel/Pentium assembler) • higher-level language (e.g., Java) • application-specific language (e.g., MatLab) • Close the gap between problem description and machine program
Program transformations • Need for program transformations • Semanticsof programsmust remain the same • Two ways of transformation: • compilation: first translate, then execute • interpretation: interleave translation and execution
Type of translators Java Java Java interpret byte code compile to assembler compile to machine language JVM compile IA-32 assembler IA-32 assembler assemble assemble machine instructions machine instructions machine instructions
Types of interpreters Combination: interpret system calls HW Interpreter SW Interpreter HW/SW Interpreter (I)PC IPC program program PC program PC PC inter- preter run-time system/ OS Q: How can you create a SW interpreter? many steps of PC for one step of IPC
Compilation vs. Interpretation vs. Just-in-Time Compilation Q: Example when interpretation is better than compilation? Vice-versa? • Advantages interpretation • Direct edit/execute cycle (5-10x) • Debugging on the level of interpreted language • Less memory requirements for programs • Advantage compilation • Faster execution (50-100x) • Semantic checks during compilation process
Simulation versus Emulation • Mimicking of hardware or software • Through program: simulation • Through hardware: emulation • Example: • PowerPC simulation on Intel Pentium • Virtual machines such as KVM and VMware Q: How can you create an NVIDIA Tesla simulator?
Programs and machines In exchanging programs and machines three notionsare relevant: • Compatibility • Portability • Conversion
Compatibility Compatibilityis functional independence of implem. • machine versions with same instruction set • Downward (BWD):new sys accepts input generated for/incorporates functionality of old sys • Code compiled on old system will run on new system • DVD readers are backwards-compatible with CDs • Upward (FWD) compatibility: • Code compiled on new system will run on old system • CDs are FWD-compatible with DVD readers
Portability (1) Portabilityis the ease of transferring a program to different machines and operating systems. • Problems: • Different machine instructions • Different OS calls • Other compiler with deviating conventions
Portability (3) • Steps: • making readable on new system • adapt to new OS • recompile • Performancecharacteristics can change
Conversion • Conversion is adaptation of applications to a different language or (operating) system • Faster code execution • Conversion problems: • expressiveness of new language • different operating systems • different network environment • different machine precision
Portability/Conversion Cost • An example • Mid-size game studio has 25+ game titles • 4 languages, 25 x 4 = 100 releases • 100 platforms (mobiles etc.) • $1,000/release x 100 x 100 = $10,000,000 all Q: How would you address this situation?
0-49k 50-199k 200-499k Outsourcing 500k+ Web 2+yr Java Ent. 1-2yr Stop Mobile 0-1yr Services Embedded Outsourcing: The Dutch Market Story Q: Good/Bad news for you? Source: European IT Outsourcing Intelligence Report 2011: The Netherlandshttp://www.itsourcing-europe.com/uploads/Dutch_ITO_Intelligence_Report_2011.pdf
Levels of abstraction ....... Language level Assembler level Operating System translate Machine-program level Microprogram level interpret Digital logic level
Virtual machines (1) Virtual machine Mn with machine language Ln Virtual machine M3 with machine language L3 Virtual machine M2 with machine language L2 Real machine M1 with machine language L1
Virtual machines (2) • A language defines a virtual machine • The machines M2,...,Mnare virtual • Machine M1is real • At Mi we need an interpreter or a compiler to translate programs written in Li+1to Li • Hardware and software are equivalent
Compiler structure Source program Intermediate-code generation Lexicographical analysis Syntactic analysis Code optimization Semantic analysis Code generation Target program
Lexicographical analysis (1) Goal: reading program text and group characters into tokens int SUM = 0; 10 characters i n t S U M = 0 ; 5 tokens = int SUM 0 ;
Lexicographical analysis (2) Tokens are classified: • Keywords (for, if,....) • Identifiers (SUM, ...) • Constants (0, 3.14, “char”) • Delimiters ({,;) • Operators (+, =, ...)
Lexicographical analysis (3) • Identifiers and constants are stored in the symbol table: entry name kind type value .. .. .. .. .. 100 SUM ident int .. .. .. .. .. .. 200 PI const real 3.1415
Syntactic analysis • Check of correctnessof program with respect to the grammar of the language • Also called parsing • Building of so called parse tree = total + 3 * total = 3 + (2*5) 2 5
Semantic analysis • Static semantics • (part of) type checking • illegal statements • Dynamic semantics • done at run-time • remainder of type checking • operator exceptions (e.g., division by0)
Intermediate code (1) • Reasons for intermediate code level: • simplify compilation process • reuse parts of compiler for different architectures • In intermediate code: • a single operation at a time • test on only one condition at a time • while loops replaced by test and branch instructions, and labels
Intermediate code (2): Example while ( (a>b) && (a <= c+d) ) a = a*b; translated into: L1: if (a>b)goto L2 goto L3 L2: h1 = c+d if(a <= h1)goto L4 goto L3 L4: a = a*b gotoL1 L3:
Code generation (1) MOV EAX, <RHS >(0) MOV <LHS >, EAX <LHS>= “total” = MOV EAX, 3 ADD EAX, <2*5 > 3 + <2*5> MOV EAX, 2 MOV EBX, 5 IMUL EAX, EBX 2*5
Code generation (2) communication via stack MOV EAX, 2 load 2 in EAX MOV EBX, 5 load 5 in EBX IMUL EAX,EBX multiply PUSH EAX push result on stack MOV EAX, 3 load 3 in EAX POP EBX pop from stack ADD EAX,EBX addition PUSH EAX push result on stack POP EAX pop from stack MOV total(0),EAX do final assignment
Code optimization omit communication via stack MOV EAX, 2 load 2 in EAX MOV EBX, 5 load 5 in EBX IMUL EAX,EBX multiply MOV EBX, 3 load 3 in EBX ADD EAX, EBX addition STW total(0), EAX do final assignment