Chapter 1.4 Programming Languages and Programming.

Post on 17-Jan-2016

236 views 1 download

Transcript of Chapter 1.4 Programming Languages and Programming.

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

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

Source Code (LLL)

ASSEMBLER

Object Code

HARDWARE

The ASSEMBLER

Assembling and Executing1. Loading the Assembler

Assembler

(in machine language)

ABL

Assembling and Executing2. Assembling the program

AssemblerSo

urc

e C

od

e

Ob

ject

Co

de

Assembling and Executing3. Loading the user’s program

ABL

User’s Program

(in machine language)

Assembling and Executing4. Executing the user’s program

User’s ProgramUs

er’

s D

ata

Us

er’

s re

su

lts

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

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

High- vs. Low-Level Languages

Final := (Written + Oral) DIV 2

STOADDSHRSTO

Written AA Oral AA 1 A Final

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.

HARDWARE

INTERPRETER

Source Code (HLL)

COMPILER

Object Code

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

Compiling and Executing1. Loading the Compiler

Compiler

(in machine language)

ABL

Compiling and Executing2. Compiling the program

CompilerSo

urc

e C

od

e

Ob

ject

Co

de

Compiling and Executing3. Loading the user’s program

ABL

User’s Program

(in machine language)

Compiling and Executing4. Executing the user’s program

User’s ProgramUs

er’

s D

ata

Us

er’

s re

su

lts

Interpretation1. Loading the Interpreter

Interpreter

(in machine language)

ABL

Interpretation2. Interpreting the user’s program

Interpreter

Us

er’

s re

su

lts

So

urc

e C

od

e+

Us

er’

s D

ata

HARDWARE

INTERPRETER

Source Code (HLL)

COMPILER

Object Code

ASSEMBLER

Assembler Source

HARDWARE 1

INTERPRETER 1

Source Code (HLL)

COMPILER

CommonAssembler Source

HARDWARE 2

INTERPRETER 2

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

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

HARDWARE

INTERPRETER

Source Code (HLL)

COMPILER

Object Code

LINKER

Reloc.Code

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

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.

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)

Spreadsheet example