1
Language Levelsand Translation
http://www.pds.ewi.tudelft.nl/~iosup/Courses/2011_ti1400_11.ppt
See also: Blackboard >> Course Material >> Reader (Dictaat)http://www.pds.ewi.tudelft.nl/vakken/in1705/cos2007.pdf
TU-DelftTI1400/11-PDS
2
IT Industry Competitiveness
Source: The Economist, Benchmarking IT industry competitiveness 2009 http://portal.bsa.org/2009eiu/study/2009_eiu_global.pdf
TU-DelftTI1400/11-PDS
3
The Netherlands: A Top IT Industry
Source: The Economist, Benchmarking IT industry competitiveness 2009 http://portal.bsa.org/2009eiu/study/2009_eiu_global.pdf
TU-DelftTI1400/11-PDS
4
But … Where’s the Human Capital?
“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
Q: Good/Bad news for you?
TU-DelftTI1400/11-PDS
5
The Simplest(?) Problem: How to Program Computers?
• So far- Design them from scratch
- Assembly
• This lecture- Language levels
- Translation
- The compiler sequence
TU-DelftTI1400/11-PDS
6
Language levels
• A computer has several language 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
TU-DelftTI1400/11-PDS
7
Program transformations
• Need for program transformations
• Semantics of programs must remain the same
• Two ways of transformation:
1. compilation: first translate, then execute
2. interpretation: interleave translation and execution
TU-DelftTI1400/11-PDS
8
Type of translators
Java
machineinstructions
Java
IA-32assembler
machineinstructions
Java
IA-32assembler
machineinstructions
JVMcompile tomachinelanguage
interpretbyte codecompile to
assembler
compile
assembleassemble
TU-DelftTI1400/11-PDS
9
Types of interpreters
programPC
program
inter-preter
IPC
PC
program
run-timesystem/OS
(I)PC
PC
many steps of PC for one step of IPC
combination:interpretsystem calls
TU-DelftTI1400/11-PDS
10
Compilation versus Interpretation
• Advantages interpretation- Direct edit/execution cycle
- Debugging on the level of interpreted language
- Less memory requirements for programs
• Advantage compilation- Faster execution (factor of 50-100)
- Semantic checks during compilation process
TU-DelftTI1400/11-PDS
11
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
TU-DelftTI1400/11-PDS
12
Programs and machines
• In exchanging programs and machines three notions are relevant:
1. Compatibility
2. Portability
3. Conversion
TU-DelftTI1400/11-PDS
13
Compatibility
• Compatibility: functionality of system is
independent of implementation
- machine versions with same instruction set
• Upward (FWD) compatibility: new version of
system incorporates functionality of old system
- Code compiled on old system will run on new system
- CDs are FWD-compatible with DVD readers
- (DVD readers are backwards-compatible with CDs)
TU-DelftTI1400/11-PDS
14
Portability (1)
• Portability is the ease of transferring a program to different machines and operating systems.
• Problems:- Different machine instructions- Different OS calls- Other compiler with deviating
conventions
TU-DelftTI1400/11-PDS
15
Portability (3)
• Steps:- making readable on new system
- adapt to new OS
- recompile
• Performance characteristics can change
TU-DelftTI1400/11-PDS
16
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
TU-DelftTI1400/11-PDS
17
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?
TU-DelftTI1400/11-PDS
18
Outsourcing: The Dutch Market Story
0-49k
50-199k
200-499k
500k+Outsourcing
Web
Java Ent.
Mobile
Services
Embedded
Stop0-1yr
1-2yr2+yr
Source: European IT Outsourcing Intelligence Report 2011: The Netherlands http://www.itsourcing-europe.com/uploads/Dutch_ITO_Intelligence_Report_2011.pdf
Q: Good/Bad news for you?
TU-DelftTI1400/11-PDS
19
Levels of abstraction
Language level
Machine-program level
Microprogram level
Assembler level
Digital logic level
Operating System
.......
interpret
translate
TU-DelftTI1400/11-PDS
20
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
TU-DelftTI1400/11-PDS
21
Virtual machines (2)
• A language defines a virtual machine
• The machines M2,...,Mn are virtual
• Machine M1 is real
• At Mi we need an interpreter or a compiler
to translate programs written in Li+1 to Li
• Hardware and software are equivalent
TU-DelftTI1400/11-PDS
22
Compiler structure
Source program
Lexicographical analysis
Syntactic analysis
Semantic analysis
Intermediate-codegeneration
Code optimization
Code generation
Target program
TU-DelftTI1400/11-PDS
23
Lexicographical analysis (1)
Goal: reading program text and group characters into tokens
int SUM = 0;
i n t S U M = 0 ;
int SUM = 0 ;
10 characters
5 tokens
TU-DelftTI1400/11-PDS
24
Lexicographical analysis (2)
Tokens are classified:• Keywords (for, if,....)• Identifiers (SUM, ...)• Constants (0, 3.14, “char”)• Delimiters ({,;)• Operators (+, =, ...)
TU-DelftTI1400/11-PDS
25
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
TU-DelftTI1400/11-PDS
26
Syntactic analysis
• Check of correctness of program with respect to the grammar of the language
• Also called parsing• Building of so called parse tree
total = 3 + (2*5)
=
+
*
52
3
total
TU-DelftTI1400/11-PDS
27
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 by 0)
TU-DelftTI1400/11-PDS
28
Intermediate code (1)
• Reasons for intermediate code level:1. simplify compilation process
2. 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
TU-DelftTI1400/11-PDS
29
Intermediate code (2): Example
while ( (a>b) && (a <= c+d) )
a = a*b;
translated into:
L1: if (a>b) goto L2
goto L3L2: h1 = c+d
if (a <= h1) goto L4goto L3
L4: a = a*bgoto L1
L3:
TU-DelftTI1400/11-PDS
30
Code generation (1)
MOV EAX, <RHS >(0)MOV <LHS >, EAXMOV EAX, 3ADD EAX, <2*5 >
MOV EAX, 2MOV EBX, 5IMUL EAX, EBX
=
3 + <2*5>
2*5
<LHS> = “total”
TU-DelftTI1400/11-PDS
31
Code generation (2)
MOV EAX, 2 load 2 in EAXMOV EBX, 5 load 5 in EBXIMUL EAX,EBX multiplyPUSH EAX push result on stack
MOV EAX, 3 load 3 in EAXPOP EBX pop from stackADD EAX,EBX additionPUSH EAX push result on stack
POP EAX pop from stackMOV total(0),EAX do final assignment
communication via stack
TU-DelftTI1400/11-PDS
32
Code optimization
MOV EAX, 2 load 2 in EAXMOV EBX, 5 load 5 in EBXIMUL EAX,EBX multiply
MOV EBX, 3 load 3 in EBXADD EAX, EBX addition
STW total(0), EAX do final assignment
omit communication via stack
Top Related