chapter 1.4 programming languages and programming

29
Chapter 1.4 Programming Languages and Programming

Upload: brittney-weaver

Post on 17-Jan-2016

242 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Chapter 1.4 Programming Languages and Programming

Chapter 1.4

Programming Languages

and

Programming

Page 2: Chapter 1.4 Programming Languages and Programming

Machine Language Assembler

P1: 10 0 1 COPY #0 NDP2: 10 0 2 COPY #0 SCP3: 40 11 0 3 EQ? KFL #0 P3P4: 24 2 10 2 MUL SC #10 SCP5: 21 2 12 2 ADD SC KDA SCP6: 10 0 11 COPY #0 KFLP7: 20 1 1 1 ADD ND #1 NDP8: 42 1 3 3 NE? ND #3 P3P9: 42 2 321 1 NE? SC #321 P1P10: 10 1 13 COPY #1 DDAP11: 47 1 JMP P1

Machine Language vs. Assembler

Page 3: Chapter 1.4 Programming Languages and Programming

ND: DAT 2 Number of digits,2 bytesSC: DAT 2 Secret code,2 bytesKFL: EQU 10 Keyboard FlagKDA: EQU 11 Keyboard DataDDA: EQU 13 Door DataBGN: COPY #0 ND Init. number of digits

COPY #0 SC Init. secret codeTFL: EQ? KFL #0 TFL Test for key stroke

MUL SC #10 SC Shift SC one digit leftADD SC KDA SC Add new digit to SCCOPY #0 KFL Reset keyflagADD ND #1 ND Increase entered digitsNE? ND #3 TFL More digits needed ?NE? SC #321 BGN Correct secret code ?COPY #1 DDA Open the doorJMP BGN Restart everythingEND

Assembler Example

Page 4: Chapter 1.4 Programming Languages and Programming

Source Code (LLL)

ASSEMBLER

Object Code

HARDWARE

The ASSEMBLER

Page 5: Chapter 1.4 Programming Languages and Programming

Assembling and Executing1. Loading the Assembler

Assembler

(in machine language)

ABL

Page 6: Chapter 1.4 Programming Languages and Programming

Assembling and Executing2. Assembling the program

AssemblerSo

urc

e C

od

e

Ob

ject

Co

de

Page 7: Chapter 1.4 Programming Languages and Programming

Assembling and Executing3. Loading the user’s program

ABL

User’s Program

(in machine language)

Page 8: Chapter 1.4 Programming Languages and Programming

Assembling and Executing4. Executing the user’s program

User’s ProgramUs

er’

s D

ata

Us

er’

s re

su

lts

Page 9: Chapter 1.4 Programming Languages and Programming

ND: DAT 2 Number of digits,2 bytesSC: DAT 2 Secret code,2 bytesKFL: EQU 10 Keyboard FlagKDA: EQU 11 Keyboard DataDDA: EQU 13 Door DataBGN: COPY #0 ND Init. number of digits

COPY #0 SC Init. secret codeTFL: EQ? KFL #0 TFL Test for key stroke

MUL SC #10 SC Shift SC one digit leftADD SC KDA SC Add new digit to SCCOPY #0 KFL Reset keyflagADD ND #1 ND Increase entered digitsNE? ND #3 TFL More digits needed ?NE? SC #321 BGN Correct secret code ?COPY #1 DDA Open the doorJMP BGN Restart everythingEND

Assembler Example

Page 10: Chapter 1.4 Programming Languages and Programming

VAR ND,SC : CARDINAL; KFL[10] : (idle,ready); KDA[11] : [0..9]; DDA[13] : (closed,open);BEGIN LOOP SC := 0; FOR ND := 1 TO 3 DO REPEAT UNTIL KFL = ready; SC := SC * 10 + KDA; KFL := idle; END (* FOR *); IF SC = 321 THEN DDA := open END (* IF *) END (* LOOP *)END

High-level Language Example

Page 11: Chapter 1.4 Programming Languages and Programming

High- vs. Low-Level Languages

Final := (Written + Oral) DIV 2

STOADDSHRSTO

Written AA Oral AA 1 A Final

Page 12: Chapter 1.4 Programming Languages and Programming

Programming Languages

• Low Level Languages (Assembler)– One statement corresponds to one instruction– Machine specific– Error prone, low programmers productivity

• High Level Languages– One statement corresponds to many instructions– Machine independent– User friendly, high programmers productivity.

Page 13: Chapter 1.4 Programming Languages and Programming

HARDWARE

INTERPRETER

Source Code (HLL)

COMPILER

Object Code

Page 14: Chapter 1.4 Programming Languages and Programming

Compilers vs. Interpreters

• Compilers– Translate the entire program at once– Program execution very fast– Poor run-time error messages

• Interpreters– Translate and execute statement after statement– Very slow execution– Good run-time error messages

Page 15: Chapter 1.4 Programming Languages and Programming

Compiling and Executing1. Loading the Compiler

Compiler

(in machine language)

ABL

Page 16: Chapter 1.4 Programming Languages and Programming

Compiling and Executing2. Compiling the program

CompilerSo

urc

e C

od

e

Ob

ject

Co

de

Page 17: Chapter 1.4 Programming Languages and Programming

Compiling and Executing3. Loading the user’s program

ABL

User’s Program

(in machine language)

Page 18: Chapter 1.4 Programming Languages and Programming

Compiling and Executing4. Executing the user’s program

User’s ProgramUs

er’

s D

ata

Us

er’

s re

su

lts

Page 19: Chapter 1.4 Programming Languages and Programming

Interpretation1. Loading the Interpreter

Interpreter

(in machine language)

ABL

Page 20: Chapter 1.4 Programming Languages and Programming

Interpretation2. Interpreting the user’s program

Interpreter

Us

er’

s re

su

lts

So

urc

e C

od

e+

Us

er’

s D

ata

Page 21: Chapter 1.4 Programming Languages and Programming

HARDWARE

INTERPRETER

Source Code (HLL)

COMPILER

Object Code

ASSEMBLER

Assembler Source

Page 22: Chapter 1.4 Programming Languages and Programming

HARDWARE 1

INTERPRETER 1

Source Code (HLL)

COMPILER

CommonAssembler Source

HARDWARE 2

INTERPRETER 2

Page 23: Chapter 1.4 Programming Languages and Programming

Source B Source C Source DSource A

Reloc. DReloc. A Reloc. B Reloc. C

Compiler X Compiler Y Assembler

LINKER

Object Code A+B+C+D

Role of a Linker

Page 24: Chapter 1.4 Programming Languages and Programming

Relocatable Code• Relocatable object code = three tables:

– CODE• Program to be loaded from address 0

• List of all location dependant addresses

– EXTERNALS• Symbolic names to be imported

• Addresses where these externals are referenced

– ENTRY POINTS• Symbolic names that can be referenced elsewhere

• Address corresponding to the symbolic name

Page 25: Chapter 1.4 Programming Languages and Programming

HARDWARE

INTERPRETER

Source Code (HLL)

COMPILER

Object Code

LINKER

Reloc.Code

Page 26: Chapter 1.4 Programming Languages and Programming

Dynamic Linking

• Fact : – Many procedures are not activated at each

program execution

• Solution :– Link at run-time !• Initial procedure calls replaced by call to linker• Procedure name passed as parameter to linker

– Example : .dll files under MS/Windows

Page 27: Chapter 1.4 Programming Languages and Programming

Imperative vs. Non-imperative

• Imperative– Program states how things should be done– Traditional programming style– Efficient execution, often compiled.

• Non imperative (Declarative or Functional)– Program states what should be done– Innovative programming style for specific fields– Often interpreted.

Page 28: Chapter 1.4 Programming Languages and Programming

Imperative vs. Non-imperative

READ (Oral);

READ (Written);

Final := (Oral+Written)/2;

WRITE (Final)

• Declarations:Oral can be read

Written can be read

Final = (Oral+Written)/2

• Commands:Write(Final)

Page 29: Chapter 1.4 Programming Languages and Programming

Spreadsheet example