Language Levels and Translation

Preview:

DESCRIPTION

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 ?. - PowerPoint PPT Presentation

Citation preview

1

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

TU-DelftTI1400/12-PDS

2

IT Industry Competitiveness

Source: The Economist, Benchmarking IT industry competitiveness 2009 http://portal.bsa.org/2009eiu/study/2009_eiu_global.pdf

NL only Top-20, see 2011 index

Q: Good/Bad news for you?

TU-DelftTI1400/12-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/12-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/12-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/12-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/12-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/12-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/12-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: interpret system calls

HW Interpreter SW Interpreter HW/SW Interpreter

Q: How can you create a SW interpreter?

TU-DelftTI1400/12-PDS

10

Compilation vs. Interpretation vs. Just-in-Time Compilation

• 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

Q: Example when interpretation is

better than compilation? Vice-versa?

TU-DelftTI1400/12-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

Q: How can you create an

NVIDIA Tesla simulator?

TU-DelftTI1400/12-PDS

12

Programs and machines

In exchanging programs and machines three notions are relevant:

1. Compatibility

2. Portability

3. Conversion

TU-DelftTI1400/12-PDS

13

Compatibility

Compatibility is 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

TU-DelftTI1400/12-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/12-PDS

15

Portability (3)

• Steps:- making readable on new system

- adapt to new OS

- recompile

• Performance characteristics can change

TU-DelftTI1400/12-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/12-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/12-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/12-PDS

19

Levels of abstraction

Language level

Machine-program level

Microprogram level

Assembler level

Digital logic level

Operating System

.......

interpret

translate

TU-DelftTI1400/12-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/12-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/12-PDS

22

Compiler structure

Source program

Lexicographical analysis

Syntactic analysis

Semantic analysis

Intermediate-codegeneration

Code optimization

Code generation

Target program

TU-DelftTI1400/12-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/12-PDS

24

Lexicographical analysis (2)

Tokens are classified:• Keywords (for, if,....)• Identifiers (SUM, ...)• Constants (0, 3.14, “char”)• Delimiters ({,;)• Operators (+, =, ...)

TU-DelftTI1400/12-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/12-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/12-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/12-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/12-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/12-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/12-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/12-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

Recommended