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