Download de presentatie
De presentatie wordt gedownload. Even geduld aub
GepubliceerdIda Kuipers Laatst gewijzigd meer dan 10 jaar geleden
1
1 SOCS Hoofdstuk 3 Basisprogrammatuur
2
2 Inhoud De Vertaler De Voorvertaler De Lader De Binder De Vertolker Het Speurprogramma Het Opstarten van de Computer
3
3 Inhoud De Vertaler De Voorvertaler De Lader De Binder Verantwoording Modules + Vertaler directieven Taken van de Binder Werking van de Binder Van Bron-programma tot Uitvoering De Vertolker Het Speurprogramma Het Opstarten van de Computer
4
4 Project Vertale r 7299999999 … 2131000000 … 1221000010 9999999999 … druk: DRU … som: OPT R0,b … main: … BIG R0,a STP a: RESGR 1 Vertale r Vertaalde Module Module
5
5 Binder Binder 7299999999 … 2131000000 … 1221000010 9999999999 … Vertaalde Module 7299999999 … 0040 2131000040 … 0066 1221000066 9999999999 … Uitvoerbaar programma
6
6 Zelfde Resultaat Vertale r Samengevoegde Modules druk: DRU … som: OPT R0,b … main: … BIG R0,a STP a: RESGR 1 7299999999 … 0040 2131000040 … 0066 1221000066 9999999999 … Uitvoerbaar programma
7
7 Verantwoording Samenvoegen van bronprogramma: Unieke symbolische adressen ? Stricte afspraken nodig Hervertaling duurt langer Programmabibliotheken Reeds vertaalde deelprogramma’s Vb. parse (ASCII-string binair getal), sqrt, sort, … Broncode niet beschikbaar Bovendien onpractisch om manueel samen te voegen
8
8 Modules Gedeelte van een programma Hoofdprogramma Procedure of Functie Verwijzigingen symbolische adressen uit andere modules main: … SBR kwad … Module A … kwad: … HIA R0,A … Module B *** fout *** lijn 17: ‘kwad’ niet gedefinieerd
9
9 Vertaler directieven EXTERN symb.adres EXTERN symb.adres symb.adres is in een andere module gedefinieerd GLOBAAL symb.adres GLOBAAL symb.adres andere module mag naar symb.adres verwijzen EXTERN kwad main: … SBR kwad … Module A GLOBAAL kwad … kwad: … HIA R0,A … Module B
10
10 Vertaler directieven STARTPR adres STARTPR adres De uitvoering start bij “adres” Moet in 1 module aanwezig zijn EXTERN kwad STARTPR main main: … SBR kwad … Module A GLOBAAL kwad … kwad: … HIA R0,A … Module B
11
11 Objectmodule Resultaat van vertaling van module Machinecode Niet uitvoerbaar! Onvolledig Sommige adressen onbekend (externe symbolische adressen) Reloceerbaar Samenvoegen (niet allemaal vanaf 0000) Vertaler genereert steeds objectmodule
12
12 Objectmodule Uitvoerbaar programma 0000000100 1131100001 … 0000000200 #symbolen … Type Lengte Startadres Symbool- tabel Hoofding 0024 0000000024 0002 0000000002 9999999999 Object- module 0000000100 1131100001 … … 0000000200 0086 0000000086 0002 0000000002 9999999991 #symbolen … #relocatie … Relocatie- & Bindings- tabel #reloc/bind. … … Machine-Code Uitvoerbaar programma
13
13 Informatie: Vertaler Binder Objectmodule = reloceerbaar Relocatie-informatie Externe symbolische adressen? Niet gekend, dus 0000 en informatie voor binder Relocatie- en bindingstabel Relatief-adres +/-Bewerking Uitgebreide symbooltabel Naam Waarde Type Type = lokaal, globaal, extern
14
14 Voorbeeld STARTPR PRG EXTERN KWAD,EIND X: 100; 1000 PRG: HIA.w R0,EIND-MACHT DRU HIA R1,X+1 MACHT: SBR KWAD DRU STP EINDPR GLOBAAL DDM,KWAD,EIND DDM: SBR KWAD VER R0,R1 KTG KWAD: HIA R0,R1 VER R0,R1 EIND: KTG EINDPR
15
15 Afspraak HIA.w 0,9995(-) HIA.w R0,EIND-MACHT 1111009995 Vertale r Schrijven als …
16
16 Vertaler Binder STARTPR PRG EXTERN KWAD,EIND X: 100; 1000 PRG: HIA.w R0,EIND-MACHT DRU HIA R1,X+1 MACHT: SBR KWAD DRU STP EINDPR Vertaler (1ste stap): 0 PT PT 1 LT LT Symb. Adres Abs. Adres Type
17
17 Vertaler Binder STARTPR PRG EXTERN KWAD,EIND X: 100; 1000 PRG: HIA.w R0,EIND-MACHT DRU HIA R1,X+1 MACHT: SBR KWAD DRU STP EINDPR Vertaler (1ste stap): 0 PT PT 1 LT LT Symb. Adres Abs. Adres Type
18
18 Symb. Adres Abs. Adres Type Vertaler Binder STARTPR PRG EXTERN KWAD,EIND X: 100; 1000 PRG: HIA.w R0,EIND-MACHT DRU HIA R1,X+1 MACHT: SBR KWAD DRU STP EINDPR Vertaler (1ste stap): Symb. Adres Abs. Adres TypeKWAD?extern EIND?extern 0 PT PT 2 LT LT
19
19 Symb. Adres Abs. Adres Type KWAD?extern EIND?extern Vertaler Binder STARTPR PRG EXTERN KWAD,EIND X: 100; 1000 PRG: HIA.w R0,EIND-MACHT DRU HIA R1,X+1 MACHT: SBR KWAD DRU STP EINDPR Vertaler (1ste stap): Symb. Adres Abs. Adres TypeKWAD?extern EIND?extern X0lokaal 0 PT PT 3 LT LT 2
20
20 Symb. Adres Abs. Adres Type KWAD?extern EIND?extern X0lokaal Vertaler Binder STARTPR PRG EXTERN KWAD,EIND X: 100; 1000 PRG: HIA.w R0,EIND-MACHT DRU HIA R1,X+1 MACHT: SBR KWAD DRU STP EINDPR Vertaler (1ste stap): Symb. Adres Abs. Adres TypeKWAD?extern EIND?extern X0lokaal PRG2lokaal 2 PT PT 4 LT LT 3
21
21 Vertaler Binder STARTPR PRG EXTERN KWAD,EIND X: 100; 1000 PRG: HIA.w R0,EIND-MACHT DRU HIA R1,X+1 MACHT: SBR KWAD DRU STP EINDPR Vertaler (1ste stap): Symb. Adres Abs. Adres Type KWAD?extern EIND?extern X0lokaal PRG2lokaal 3 PT PT 5 LT LT 4
22
22 Vertaler Binder STARTPR PRG EXTERN KWAD,EIND X: 100; 1000 PRG: HIA.w R0,EIND-MACHT DRU HIA R1,X+1 MACHT: SBR KWAD DRU STP EINDPR Vertaler (1ste stap): Symb. Adres Abs. Adres Type KWAD?extern EIND?extern X0lokaal PRG2lokaal 4 PT PT 6 LT LT 5
23
23 Symb. Adres Abs. Adres Type KWAD?extern EIND?extern X0lokaal PRG2lokaal Vertaler Binder STARTPR PRG EXTERN KWAD,EIND X: 100; 1000 PRG: HIA.w R0,EIND-MACHT DRU HIA R1,X+1 MACHT: SBR KWAD DRU STP EINDPR Vertaler (1ste stap): Symb. Adres Abs. Adres TypeKWAD?extern EIND?extern X0lokaal PRG2lokaal MACHT5lokaal 5 PT PT 7 LT LT 6
24
24 Vertaler Binder STARTPR PRG EXTERN KWAD,EIND X: 100; 1000 PRG: HIA.w R0,EIND-MACHT DRU HIA R1,X+1 MACHT: SBR KWAD DRU STP EINDPR Vertaler (1ste stap): Symb. Adres Abs. Adres Type KWAD?extern EIND?extern X0lokaal PRG2lokaal MACHT5lokaal 6 PT PT 8 LT LT 7
25
25 Vertaler Binder STARTPR PRG EXTERN KWAD,EIND X: 100; 1000 PRG: HIA.w R0,EIND-MACHT DRU HIA R1,X+1 MACHT: SBR KWAD DRU STP EINDPR Vertaler (1ste stap): Symb. Adres Abs. Adres Type KWAD?extern EIND?extern X0lokaal PRG2lokaal MACHT5lokaal 7 PT PT 9 LT LT 8
26
26 Vertaler Binder STARTPR PRG EXTERN KWAD,EIND X: 100; 1000 PRG: HIA.w R0,EIND-MACHT DRU HIA R1,X+1 MACHT: SBR KWAD DRU STP EINDPR Vertaler (1ste stap): Symb. Adres Abs. Adres Type KWAD?extern EIND?extern X0lokaal PRG2lokaal MACHT5lokaal 7 PT PT 10 LT LT 8
27
27 Vertaler Binder STARTPR PRG EXTERN KWAD,EIND X: 100; 1000 PRG: HIA.w R0,EIND-MACHT DRU HIA R1,X+1 MACHT: SBR KWAD DRU STP EINDPR Vertaler (2de stap): Symb. Adres Abs. Adres Type KWAD?extern EIND?extern X0lokaal PRG2lokaal MACHT5lokaal 0 PT PT 1 LT LT St St
28
28 St St Vertaler Binder STARTPR PRG EXTERN KWAD,EIND X: 100; 1000 PRG: HIA.w R0,EIND-MACHT DRU HIA R1,X+1 MACHT: SBR KWAD DRU STP EINDPR Vertaler (2de stap): Symb. Adres Abs. Adres Type KWAD?extern EIND?extern X0lokaal PRG2lokaal MACHT5lokaal 0 PT PT 1 LT LT 2
29
29 Vertaler Binder STARTPR PRG EXTERN KWAD,EIND X: 100; 1000 PRG: HIA.w R0,EIND-MACHT DRU HIA R1,X+1 MACHT: SBR KWAD DRU STP EINDPR Vertaler (2de stap): Symb. Adres Abs. Adres Type KWAD?extern EIND?extern X0lokaal PRG2lokaal MACHT5lokaal 0 PT PT 2 LT LT 2 St St
30
30 Vertaler Binder STARTPR PRG EXTERN KWAD,EIND X: 100; 1000 PRG: HIA.w R0,EIND-MACHT DRU HIA R1,X+1 MACHT: SBR KWAD DRU STP EINDPR Vertaler (2de stap): Symb. Adres Abs. Adres Type KWAD?extern EIND?extern X0lokaal PRG2lokaal MACHT5lokaal 0 PT PT 3 LT LT 2 0000000100 0000001000 2 St St
31
31 Vertaler Binder STARTPR PRG EXTERN KWAD,EIND X: 100; 1000 PRG: HIA.w R0,EIND-MACHT DRU HIA R1,X+1 MACHT: SBR KWAD DRU STP EINDPR Vertaler (2de stap): Symb. Adres Abs. Adres Type KWAD?extern EIND?extern X0lokaal PRG2lokaal MACHT5lokaal 2 PT PT 4 LT LT 3 0000000100 0002 +EIND 0000001000 HIA.w 0,9995(-) 2 St St 0002 -#LAADADRES# 0000 – 0005 = 9995
32
32 Vertaler Binder STARTPR PRG EXTERN KWAD,EIND X: 100; 1000 PRG: HIA.w R0,EIND-MACHT DRU HIA R1,X+1 MACHT: SBR KWAD DRU STP EINDPR Vertaler (2de stap): Symb. Adres Abs. Adres Type KWAD?extern EIND?extern X0lokaal PRG2lokaal MACHT5lokaal 3 PT PT 5 LT LT 4 0000000100 0002 +EIND 0000001000 HIA.w 0,9995(-) DRU 2 St St 0002 -#LAADADRES#
33
33 Vertaler Binder STARTPR PRG EXTERN KWAD,EIND X: 100; 1000 PRG: HIA.w R0,EIND-MACHT DRU HIA R1,X+1 MACHT: SBR KWAD DRU STP EINDPR Vertaler (2de stap): Symb. Adres Abs. Adres Type KWAD?extern EIND?extern X0lokaal PRG2lokaal MACHT5lokaal 4 PT PT 6 LT LT 5 0000000100 0002 +EIND 0000001000 HIA.w 0,9995(-) DRU HIA.d 1,0001(-) 2 St St 0002 -#LAADADRES# 0004 +#LAADADRES# 0000 + 1 = 0001
34
34 Vertaler Binder STARTPR PRG EXTERN KWAD,EIND X: 100; 1000 PRG: HIA.w R0,EIND-MACHT DRU HIA R1,X+1 MACHT: SBR KWAD DRU STP EINDPR Vertaler (2de stap): Symb. Adres Abs. Adres Type KWAD?extern EIND?extern X0lokaal PRG2lokaal MACHT5lokaal 5 PT PT 7 LT LT 6 0000000100 0002 +EIND 0000001000 HIA.w 0,9995(-) DRU HIA.d 1,0001(-) SBR.d 0000(-) 2 St St 0002 -#LAADADRES# 0004 +#LAADADRES# 0005 +KWAD
35
35 Vertaler Binder STARTPR PRG EXTERN KWAD,EIND X: 100; 1000 PRG: HIA.w R0,EIND-MACHT DRU HIA R1,X+1 MACHT: SBR KWAD DRU STP EINDPR Vertaler (2de stap): Symb. Adres Abs. Adres Type KWAD?extern EIND?extern X0lokaal PRG2lokaal MACHT5lokaal 6 PT PT 8 LT LT 7 0000000100 0002 +EIND 0000001000 HIA.w 0,9995(-) DRU HIA.d 1,0001(-) SBR.d 0000(-) DRU 2 St St 0002 -#LAADADRES# 0004 +#LAADADRES# 0005 +KWAD
36
36 Vertaler Binder STARTPR PRG EXTERN KWAD,EIND X: 100; 1000 PRG: HIA.w R0,EIND-MACHT DRU HIA R1,X+1 MACHT: SBR KWAD DRU STP EINDPR Vertaler (2de stap): Symb. Adres Abs. Adres Type KWAD?extern EIND?extern X0lokaal PRG2lokaal MACHT5lokaal 7 PT PT 9 LT LT 8 0000000100 0002 +EIND 0000001000 HIA.w 0,9995(-) DRU HIA.d 1,0001(-) SBR.d 0000(-) DRU STP 2 St St 0002 -#LAADADRES# 0004 +#LAADADRES# 0005 +KWAD
37
37 Vertaler Binder STARTPR PRG EXTERN KWAD,EIND X: 100; 1000 PRG: HIA.w R0,EIND-MACHT DRU HIA R1,X+1 MACHT: SBR KWAD DRU STP EINDPR Vertaler (2de stap): Symb. Adres Abs. Adres Type KWAD?extern EIND?extern X0lokaal PRG2lokaal MACHT5lokaal 8 PT PT 10 LT LT0000000100 0002 +EIND 0000001000 HIA.w 0,9995(-) DRU HIA.d 1,0001(-) SBR.d 0000(-) DRU STP 2 St St 0002 -#LAADADRES# 0004 +#LAADADRES# 0005 +KWAD
38
38 0000000100 HIA.w 0,9995(-) HIA.d 1,0001(-) DRU 0000001000 SBR.d 0000(-) DRU STP Vertaler Binder 8 PT PT 00000001000000001000 HIA.w 0,9995(-) DRU HIA.d 1,0001(-) SBR.d 0000(-) DRU STP 2 St St 0002 +EIND 0002 -#LAADADRES# 0004 +#LAADADRES# 0005 +KWAD Symb. Adres Abs. Adres Type KWAD?extern EIND?extern X0lokaal PRG2lokaal MACHT5lokaal 0008 0000000008 0002 0000000002 9999999999
39
39 Vertaler Binder 8 PT PT 00000001000000001000 HIA.w 0,9995(-) DRU HIA.d 1,0001(-) SBR.d 0000(-) DRU STP 2 St St 0002 +EIND 0002 -#LAADADRES# 0004 +#LAADADRES# 0005 +KWAD Symb. Adres Abs. Adres Type KWAD?extern EIND?extern X0lokaal PRG2lokaal MACHT5lokaal #symbolen ???? KWAD ???? extern ???? EIND ???? extern 0000 X 0000 lokaal 0002 PRG 0002 lokaal 0005 MACHT 0005 lokaal #relocatie/binding 0002 +EIND 0002 -#LAADADRES# 0004 +#LAADADRES# 0005+KWAD 0005 +KWAD
40
40 Vertaler Binder GLOBAAL DDM,KWAD,EIND DDM: SBR KWAD VER R0,R1 KTG KWAD: HIA R0,R1 VER R0,R1 EIND: KTG EINDPR Vertaler (1ste stap): Symb. Adres Abs. Adres Type 0 PT PT 1 LT LT
41
41 Symb. Adres Abs. Adres Type Vertaler Binder GLOBAAL DDM,KWAD,EIND DDM: SBR KWAD VER R0,R1 KTG KWAD: HIA R0,R1 VER R0,R1 EIND: KTG EINDPR Vertaler (1ste stap): Symb. Adres Abs. Adres TypeDDM?globaal KWAD?globaal EIND?globaal 0 PT PT 1 LT LT
42
42 Symb. Adres Abs. Adres Type DDM?globaal KWAD?globaal EIND?globaal Vertaler Binder GLOBAAL DDM,KWAD,EIND DDM: SBR KWAD VER R0,R1 KTG KWAD: HIA R0,R1 VER R0,R1 EIND: KTG EINDPR Vertaler (1ste stap): 0 PT PT 2 LT LT 1 Symb. Adres Abs. Adres TypeDDM0globaal KWAD?globaal EIND?globaal
43
43 Vertaler Binder GLOBAAL DDM,KWAD,EIND DDM: SBR KWAD VER R0,R1 KTG KWAD: HIA R0,R1 VER R0,R1 EIND: KTG EINDPR Vertaler (1ste stap): Symb. Adres Abs. Adres Type DDM0globaal KWAD?globaal EIND?globaal 1 PT PT 3 LT LT 2
44
44 Vertaler Binder GLOBAAL DDM,KWAD,EIND DDM: SBR KWAD VER R0,R1 KTG KWAD: HIA R0,R1 VER R0,R1 EIND: KTG EINDPR Vertaler (1ste stap): Symb. Adres Abs. Adres Type DDM0globaal KWAD?globaal EIND?globaal 2 PT PT 4 LT LT 3
45
45 Symb. Adres Abs. Adres Type DDM0globaal KWAD?globaal EIND?globaal Vertaler Binder GLOBAAL DDM,KWAD,EIND DDM: SBR KWAD VER R0,R1 KTG KWAD: HIA R0,R1 VER R0,R1 EIND: KTG EINDPR Vertaler (1ste stap): Symb. Adres Abs. Adres TypeDDM0globaal KWAD3globaal EIND?globaal 3 PT PT 5 LT LT 4
46
46 Vertaler Binder GLOBAAL DDM,KWAD,EIND DDM: SBR KWAD VER R0,R1 KTG KWAD: HIA R0,R1 VER R0,R1 EIND: KTG EINDPR Vertaler (1ste stap): Symb. Adres Abs. Adres Type DDM0globaal KWAD3globaal EIND?globaal 4 PT PT 6 LT LT 5
47
47 Symb. Adres Abs. Adres Type DDM0globaal KWAD3globaal EIND?globaal Symb. Adres Abs. Adres TypeDDM0globaal KWAD3globaal EIND?globaal Vertaler Binder GLOBAAL DDM,KWAD,EIND DDM: SBR KWAD VER R0,R1 KTG KWAD: HIA R0,R1 VER R0,R1 EIND: KTG EINDPR Vertaler (1ste stap): Symb. Adres Abs. Adres TypeDDM0globaal KWAD3globaal EIND5globaal 5 PT PT 7 LT LT 6
48
48 Vertaler Binder GLOBAAL DDM,KWAD,EIND DDM: SBR KWAD VER R0,R1 KTG KWAD: HIA R0,R1 VER R0,R1 EIND: KTG EINDPR Vertaler (1ste stap): Symb. Adres Abs. Adres Type DDM0globaal KWAD3globaal EIND5globaal 6 PT PT 8 LT LT
49
49 Vertaler Binder Vertaler (2de stap): 0 PT PT 1 LT LT St St GLOBAAL DDM,KWAD,EIND DDM: SBR KWAD VER R0,R1 KTG KWAD: HIA R0,R1 VER R0,R1 EIND: KTG EINDPR Symb. Adres Abs. Adres Type DDM0globaal KWAD3globaal EIND5globaal
50
50 Vertaler Binder Vertaler (2de stap): 0 PT PT 1 LT LT St St GLOBAAL DDM,KWAD,EIND DDM: SBR KWAD VER R0,R1 KTG KWAD: HIA R0,R1 VER R0,R1 EIND: KTG EINDPR Symb. Adres Abs. Adres Type DDM0globaal KWAD3globaal EIND5globaal
51
51 Vertaler Binder Vertaler (2de stap): 0 PT PT 2 LT LT 1 SBR.d 0003(-) St St 0000 +#LAADADRES# GLOBAAL DDM,KWAD,EIND DDM: SBR KWAD VER R0,R1 KTG KWAD: HIA R0,R1 VER R0,R1 EIND: KTG EINDPR Symb. Adres Abs. Adres Type DDM0globaal KWAD3globaal EIND5globaal
52
52 Vertaler Binder Vertaler (2de stap): 1 PT PT 3 LT LT 2 SBR.d 0003(-) VER.w 0,0000(1) St St 0000 +#LAADADRES# GLOBAAL DDM,KWAD,EIND DDM: SBR KWAD VER R0,R1 KTG KWAD: HIA R0,R1 VER R0,R1 EIND: KTG EINDPR Symb. Adres Abs. Adres Type DDM0globaal KWAD3globaal EIND5globaal
53
53 Vertaler Binder Vertaler (2de stap): 2 PT PT 4 LT LT 3 SBR.d 0003(-) VER.w 0,0000(1) KTG St St 0000 +#LAADADRES# GLOBAAL DDM,KWAD,EIND DDM: SBR KWAD VER R0,R1 KTG KWAD: HIA R0,R1 VER R0,R1 EIND: KTG EINDPR Symb. Adres Abs. Adres Type DDM0globaal KWAD3globaal EIND5globaal
54
54 Vertaler Binder Vertaler (2de stap): 3 PT PT 5 LT LT 4 SBR.d 0003(-) VER.w 0,0000(1) KTG HIA.w 0,0000(1) St St 0000 +#LAADADRES# GLOBAAL DDM,KWAD,EIND DDM: SBR KWAD VER R0,R1 KTG KWAD: HIA R0,R1 VER R0,R1 EIND: KTG EINDPR Symb. Adres Abs. Adres Type DDM0globaal KWAD3globaal EIND5globaal
55
55 Vertaler Binder Vertaler (2de stap): 4 PT PT 6 LT LT 5 SBR.d 0003(-) VER.w 0,0000(1) KTG HIA.w 0,0000(1) VER.w 0,0000(1) St St 0000 +#LAADADRES# GLOBAAL DDM,KWAD,EIND DDM: SBR KWAD VER R0,R1 KTG KWAD: HIA R0,R1 VER R0,R1 EIND: KTG EINDPR Symb. Adres Abs. Adres Type DDM0globaal KWAD3globaal EIND5globaal
56
56 Vertaler Binder Vertaler (2de stap): 5 PT PT 7 LT LT 6 SBR.d 0003(-) VER.w 0,0000(1) KTG HIA.w 0,0000(1) VER.w 0,0000(1) KTG St St 0000 +#LAADADRES# GLOBAAL DDM,KWAD,EIND DDM: SBR KWAD VER R0,R1 KTG KWAD: HIA R0,R1 VER R0,R1 EIND: KTG EINDPR Symb. Adres Abs. Adres Type DDM0globaal KWAD3globaal EIND5globaal
57
57 Vertaler Binder Vertaler (2de stap): 6 PT PT 8 LT LT SBR.d 0003(-) VER.w 0,0000(1) KTG HIA.w 0,0000(1) VER.w 0,0000(1) KTG St St 0000 +#LAADADRES# GLOBAAL DDM,KWAD,EIND DDM: SBR KWAD VER R0,R1 KTG KWAD: HIA R0,R1 VER R0,R1 EIND: KTG EINDPR Symb. Adres Abs. Adres Type DDM0globaal KWAD3globaal EIND5globaal
58
58 Vertaler Binder 6 PT PT SBR.d 0003(-) VER.w 0,0000(1) KTG HIA.w 0,0000(1) VER.w 0,0000(1) KTG St St 0000 +#LAADADRES# Symb. Adres Abs. Adres Type DDM0globaal KWAD3globaal EIND5globaal SBR.d 0003(-) KTG VER.w 0,0000(1) HIA.w 0,0000(1) VER.w 0,0000(1) KTG #relocatie/binding 0000 +#LAADADRES# #symbolen 0000 DDM 0000 globaal 0003 KWAD 0003 globaal 0005 EIND 0005 globaal 0006 0000000006 9999999999 9999999999
59
59 Taken van de binder Plaats voorzien voor de modules Machinecode samenvoegen Startadres bepalen Code reloceren Externe referenties in rekening brengen (Relocatietabel genereren)
60
60 Werking van de binder Twee stappen: Stap 1: allocatie en globale symbooltabel Stap 2: code samenvoegen, reloceren, binden, …
61
61 Stap 1: Allocatie- en globale symbooltabel Allocatietabel Beginadres van elke module bepalen Globale Symbooltabel globale etiketten globale symbooltabel Gebruikte delen van objectmodules: Hoofding Symbooltabel
62
62 Allocatietabel ModuleBeginadres Stap 1: Allocatie- en globale symbooltabel 0008 0000000008 0002 0000000002 9999999999 #symbolen ???? KWAD ???? extern ???? EIND ???? extern 0000 X 0000 lokaal 0002 PRG 0002 lokaal 0005 MACHT 0005 lokaal CODE Relocatie/Binding Module A AllocatietabelModuleBeginadres A0000 Globale Symbooltabel EtiketAdres 0 PT PT A00000008 8
63
63 Stap 1: Allocatie- en globale symbooltabel #symbolen 0000 DDM 0000 globaal 0003 KWAD 0003 globaal 0005 EIND 0005 globaal 0006 0000000006 9999999999 9999999999 CODE Relocatie/Binding Module B Allocatietabel ModuleBeginadres A0000 Globale Symbooltabel EtiketAdres 8 PT PT A0000 0008AllocatietabelModuleBeginadres A0000 B0008 B 0014 14 0000 + 0008 = 0008
64
64 Stap 1: Allocatie- en globale symbooltabel #symbolen 0000 DDM 0000 globaal 0003 KWAD 0003 globaal 0005 EIND 0005 globaal 0006 0000000006 9999999999 9999999999 CODE Relocatie/Binding Module B Globale Symbooltabel EtiketAdres DDM0008 14 PT PT A0000 0008 BAllocatietabelModuleBeginadres A0000 B0008 0014 0003 + 0008 = 0011
65
65 Stap 1: Allocatie- en globale symbooltabel #symbolen 0000 DDM 0000 globaal 0003 KWAD 0003 globaal 0005 EIND 0005 globaal 0006 0000000006 9999999999 9999999999 CODE Relocatie/Binding Module B Globale Symbooltabel EtiketAdres DDM0008 KWAD0011 14 PT PT A0000 0008 BAllocatietabelModuleBeginadres A0000 B0008 0014 0005 + 0008 = 0013
66
66 Stap 1: Allocatie- en globale symbooltabel #symbolen 0000 DDM 0000 globaal 0003 KWAD 0003 globaal 0005 EIND 0005 globaal 0006 0000000006 9999999999 9999999999 CODE Relocatie/Binding Module B Globale Symbooltabel EtiketAdres DDM0008 KWAD0011 EIND0013 14 PT PT A0000 0008 BAllocatietabelModuleBeginadres A0000 B0008 0014
67
67 Stap 2: Samenvoegen, reloceren en binden Code van alle modules samenvoegen Relocatie/Binding m.b.v. Relocatie/Bindingstabel Adres +#LAADADRES# + beginadres van Module Adres +EXTERN + waarde van globaal symbool Startadres bepalen startadres + beginadres van de module Symbooltabel toevoegen Relocatietabel aanmaken
68
68 Stap 2: Samenvoegen, reloceren en binden 0000000100 HIA.w 0,9995(-) HIA.d 1,0001(-) DRU 0000001000 SBR.d 0000(-) DRU STP SBR.d 0003(-) KTG VER.w 0,0000(1) HIA.w 0,0000(1) VER.w 0,0000(1) KTG 012345678910111213 Samenvoegen
69
69 Stap 2: Samenvoegen, reloceren en binden 0000000100 HIA.w 0,9995(-) HIA.d 1,0001(-) DRU 0000001000 SBR.d 0000(-) DRU STP SBR.d 0003(-) KTG VER.w 0,0000(1) HIA.w 0,0000(1) VER.w 0,0000(1) KTG #relocatie/binding 0002 +EIND 0002 -#LAADADRES# 0004 +#LAADADRES# 0005+KWAD 0005 +KWAD Module A Globale Symbooltabel EtiketAdres DDM0008 KWAD0011 EIND0013 012345678910111213 Samenvoegen RelocerenAllocatietabelMod.Beginadres A0000 B0008
70
70 Stap 2: Samenvoegen, reloceren en binden 0000000100 HIA.w 0,9995(-) HIA.d 1,0001(-) DRU 0000001000 SBR.d 0000(-) DRU STP SBR.d 0003(-) KTG VER.w 0,0000(1) HIA.w 0,0000(1) VER.w 0,0000(1) KTG #relocatie/binding 0002 +EIND 0002 -#LAADADRES# 0004 +#LAADADRES# 0005+KWAD 0005 +KWAD Module A Globale Symbooltabel EtiketAdres DDM0008 KWAD0011 EIND0013 AllocatietabelMod.Beginadres A0000 B0008 012345678910111213 9995 + 0013 - 0000 = 0008 Samenvoegen Reloceren 0002 + 0000 = 0002
71
71 Stap 2: Samenvoegen, reloceren en binden 0000000100 0008 HIA.w 0,0008(-) HIA.d 1,0001(-) DRU 0000001000 SBR.d 0000(-) DRU STP SBR.d 0003(-) KTG VER.w 0,0000(1) HIA.w 0,0000(1) VER.w 0,0000(1) KTG #relocatie/binding 0002 +EIND 0002 -#LAADADRES# 0004 +#LAADADRES# 0005+KWAD 0005 +KWAD Module A Globale Symbooltabel EtiketAdres DDM0008 KWAD0011 EIND0013 012345678910111213 0001 + 0000 = 0001 Samenvoegen RelocerenAllocatietabelMod.Beginadres A0000 B0008 0004 + 0000 = 0004
72
72 Stap 2: Samenvoegen, reloceren en binden 0000000100 0008 HIA.w 0,0008(-) 0001 HIA.d 1,0001(-) DRU 0000001000 SBR.d 0000(-) DRU STP SBR.d 0003(-) KTG VER.w 0,0000(1) HIA.w 0,0000(1) VER.w 0,0000(1) KTG #relocatie/binding 0002 +EIND 0002 -#LAADADRES# 0004 +#LAADADRES# 0005+KWAD 0005 +KWAD Module A Globale Symbooltabel EtiketAdres DDM0008 KWAD0011 EIND0013 012345678910111213 0000 + 0011 = 0011 Samenvoegen RelocerenAllocatietabelMod.Beginadres A0000 B0008 0005 + 0000 = 0005
73
73 Stap 2: Samenvoegen, reloceren en binden 0000000100 0008 HIA.w 0,0008(-) 0001 HIA.d 1,0001(-) DRU 0000001000 0011 SBR.d 0011(-) DRU STP SBR.d 0003(-) KTG VER.w 0,0000(1) HIA.w 0,0000(1) VER.w 0,0000(1) KTG #relocatie/binding 0002 +EIND 0002 -#LAADADRES# 0004 +#LAADADRES# 0005+KWAD 0005 +KWAD Module A Globale Symbooltabel EtiketAdres DDM0008 KWAD0011 EIND0013 012345678910111213 Samenvoegen RelocerenAllocatietabelMod.Beginadres A0000 B0008
74
74 Stap 2: Samenvoegen, reloceren en binden 0000000100 0008 HIA.w 0,0008(-) 0001 HIA.d 1,0001(-) DRU 0000001000 0011 SBR.d 0011(-) DRU STP SBR.d 0003(-) KTG VER.w 0,0000(1) HIA.w 0,0000(1) VER.w 0,0000(1) KTG Globale Symbooltabel EtiketAdres DDM0008 KWAD0011 EIND0013 012345678910111213 Module B #relocatie/binding 0000 +#LAADADRES# Samenvoegen RelocerenAllocatietabelMod.Beginadres A0000 B0008
75
75 Stap 2: Samenvoegen, reloceren en binden 0000000100 0008 HIA.w 0,0008(-) 0001 HIA.d 1,0001(-) DRU 0000001000 0011 SBR.d 0011(-) DRU STP SBR.d 0003(-) KTG VER.w 0,0000(1) HIA.w 0,0000(1) VER.w 0,0000(1) KTG Globale Symbooltabel EtiketAdres DDM0008 KWAD0011 EIND0013 012345678910111213 Module B #relocatie/binding 0000 +#LAADADRES# 0003 + 0008 = 0011 Samenvoegen RelocerenAllocatietabelMod.Beginadres A0000 B0008 0000 + 0008 = 0008
76
76 Stap 2: Samenvoegen, reloceren en binden 0000000100 0008 HIA.w 0,0008(-) 0001 HIA.d 1,0001(-) DRU 0000001000 0011 SBR.d 0011(-) DRU STP 0011 SBR.d 0011(-) KTG VER.w 0,0000(1) HIA.w 0,0000(1) VER.w 0,0000(1) KTG Module B Globale Symbooltabel EtiketAdres DDM0008 KWAD0011 EIND0013 012345678910111213 #relocatie/binding 0000 +#LAADADRES# Samenvoegen RelocerenAllocatietabelMod.Beginadres A0000 B0008
77
77 Stap 2: Samenvoegen, reloceren en binden Allocatietabel Mod.Beginadres A0000 B0008 0002 + 0000 = 0002 Module A 0008 0000000008 0002 0000000002 9999999999 Samenvoegen Reloceren Startadres 0002
78
78 Stap 2: Samenvoegen, reloceren en binden Module A #symbolen ???? KWAD ???? extern ???? EIND ???? extern 0000 X 0000 lokaal 0002 PRG 0002 lokaal 0005 MACHT 0005 lokaal Allocatietabel Mod.Beginadres A0000 B0008 #symbolen 0000 X 0000 lokaal 0002 PRG 0002 lokaal 0005 MACHT 0005 lokaal 0000 + 0000 = 0000 0002 + 0000 = 0002 0005 + 0000 = 0005 Samenvoegen Reloceren Startadres 0002 Symbooltabel
79
79 Stap 2: Samenvoegen, reloceren en binden Allocatietabel Mod.Beginadres A0000 B0008 #symbolen 0000 X 0000 lokaal 0002 PRG 0002 lokaal 0005 MACHT 0005 lokaal Module B #symbolen 0000 DDM 0000 globaal 0003 KWAD 0003 globaal 0005 EIND 0005 globaal 0008 DDM 0008 lokaal 0011 KWAD 0011 lokaal 0013 EIND 0013 lokaal 0000 + 0008 = 0008 0003 + 0008 = 0011 0005 + 0008 = 0013 Samenvoegen Reloceren Startadres Symbooltabel 0002
80
80 Stap 2: Samenvoegen, reloceren en binden Samenvoegen Reloceren #relocatie/binding 0002 +EIND 0002 -#LAADADRES# 0004 +#LAADADRES# 0005+KWAD 0005 +KWAD Module A Startadres Symbooltabel Allocatietabel Mod.Beginadres A0000 B0008 0002 + 0000 = 0002 0004 + 0000 = 0004 0005 + 0000 = 0005 #relocatie/binding 0002 +#LAADADRES# 0002 -#LAADADRES# 0004 +#LAADADRES# 0005+#LAADADRES# 0005 +#LAADADRES# Relocatietabel 0002
81
81 Stap 2: Samenvoegen, reloceren en binden Samenvoegen Reloceren Startadres Symbooltabel Allocatietabel Mod.Beginadres A0000 B0008 0000 + 0008 = 0008 #relocatie/binding 0002 +#LAADADRES# 0002 -#LAADADRES# 0004 +#LAADADRES# 0005+#LAADADRES# 0005 +#LAADADRES# Relocatietabel Module B #relocatie/binding 0000 +#LAADADRES# 0008+#LAADADRES# 0008 +#LAADADRES# 0002
82
82 Stap 2: Samenvoegen, reloceren en binden Samenvoegen Reloceren Startadres Symbooltabel #relocatie/binding 0002 +#LAADADRES# 0002 -#LAADADRES# Relocatietabel 0004 +#LAADADRES# 0005+#LAADADRES# 0005 +#LAADADRES# 0008+#LAADADRES# 0008 +#LAADADRES# 0002
83
83 Stap 2: Samenvoegen, reloceren en binden Samenvoegen Reloceren Startadres Symbooltabel #relocatie/binding Relocatietabel 0004 +#LAADADRES# 0005+#LAADADRES# 0005 +#LAADADRES# 0008+#LAADADRES# 0008 +#LAADADRES# 0002
84
84 Stap 2: Uitvoerbaar programma #relocatie/binding 0004 +#LAADADRES# 0005+#LAADADRES# 0005 +#LAADADRES# 0008+#LAADADRES# 0008 +#LAADADRES# #symbolen 0000 X 0000 lokaal 0002 PRG 0002 lokaal 0005 MACHT 0005 lokaal 0008 DDM 0008 lokaal 0011 KWAD 0011 lokaal 0013 EIND 0013 lokaal 0000000100 0008 HIA.w 0,0008(-) 0001 HIA.d 1,0001(-) DRU 0000001000 0011 SBR.d 0011(-) DRU STP 0011 SBR.d 0011(-) KTG VER.w 0,0000(1) HIA.w 0,0000(1) KTG 0014 0000000014 0002 0000000002 9999999991
85
85 Programmabibliotheek Bij vertaler Verzameling subroutines Vertaald Samengevoegd in bibliotheek Binder: Symbolisch adres niet gedefinieerd Gezocht in de bibliotheek
86
86 RAM Van bronprogramma tot Uitvoerbaar programma Module A (met macro’s) Module B (met macro’s) Module A (zonder macro’s) Objectmodule A Voorvertaler Vertaler Binder Uitvoerbaar Programma Module B (zonder macro’s) Objectmodule B Voorvertaler Vertaler Programma- bibliotheek Lader Uitvoerbaar Programma Broncode Machinecode Legende:
87
87 Cursustekst Hoofdstuk 3: pag. 63 pag. 77
Verwante presentaties
© 2024 SlidePlayer.nl Inc.
All rights reserved.