1 SOCS Hoofdstuk 3 Basisprogrammatuur
2 Inhoud De Vertaler De Voorvertaler De Lader De Binder De Vertolker Het Speurprogramma Het Opstarten van de Computer
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 Project Vertale r … … … druk: DRU … som: OPT R0,b … main: … BIG R0,a STP a: RESGR 1 Vertale r Vertaalde Module Module
5 Binder Binder … … … Vertaalde Module … … … Uitvoerbaar programma
6 Zelfde Resultaat Vertale r Samengevoegde Modules druk: DRU … som: OPT R0,b … main: … BIG R0,a STP a: RESGR … … … Uitvoerbaar programma
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 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 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 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 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 Objectmodule Uitvoerbaar programma … #symbolen … Type Lengte Startadres Symbool- tabel Hoofding Object- module … … #symbolen … #relocatie … Relocatie- & Bindings- tabel #reloc/bind. … … Machine-Code Uitvoerbaar programma
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 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 Afspraak HIA.w 0,9995(-) HIA.w R0,EIND-MACHT Vertale r Schrijven als …
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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 St St
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 EIND HIA.w 0,9995(-) 2 St St #LAADADRES# 0000 – 0005 = 9995
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 EIND HIA.w 0,9995(-) DRU 2 St St #LAADADRES#
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 EIND HIA.w 0,9995(-) DRU HIA.d 1,0001(-) 2 St St #LAADADRES# #LAADADRES# = 0001
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 EIND HIA.w 0,9995(-) DRU HIA.d 1,0001(-) SBR.d 0000(-) 2 St St #LAADADRES# #LAADADRES# KWAD
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 EIND HIA.w 0,9995(-) DRU HIA.d 1,0001(-) SBR.d 0000(-) DRU 2 St St #LAADADRES# #LAADADRES# KWAD
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 EIND HIA.w 0,9995(-) DRU HIA.d 1,0001(-) SBR.d 0000(-) DRU STP 2 St St #LAADADRES# #LAADADRES# KWAD
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 LT EIND HIA.w 0,9995(-) DRU HIA.d 1,0001(-) SBR.d 0000(-) DRU STP 2 St St #LAADADRES# #LAADADRES# KWAD
HIA.w 0,9995(-) HIA.d 1,0001(-) DRU SBR.d 0000(-) DRU STP Vertaler Binder 8 PT PT HIA.w 0,9995(-) DRU HIA.d 1,0001(-) SBR.d 0000(-) DRU STP 2 St St EIND #LAADADRES# #LAADADRES# KWAD Symb. Adres Abs. Adres Type KWAD?extern EIND?extern X0lokaal PRG2lokaal MACHT5lokaal
39 Vertaler Binder 8 PT PT HIA.w 0,9995(-) DRU HIA.d 1,0001(-) SBR.d 0000(-) DRU STP 2 St St EIND #LAADADRES# #LAADADRES# 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 EIND #LAADADRES# #LAADADRES# 0005+KWAD KWAD
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 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 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 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 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 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 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 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 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 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 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 Vertaler Binder Vertaler (2de stap): 0 PT PT 2 LT LT 1 SBR.d 0003(-) St St #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 Vertaler Binder Vertaler (2de stap): 1 PT PT 3 LT LT 2 SBR.d 0003(-) VER.w 0,0000(1) St St #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 Vertaler Binder Vertaler (2de stap): 2 PT PT 4 LT LT 3 SBR.d 0003(-) VER.w 0,0000(1) KTG St St #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 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 #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 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 #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 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 #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 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 #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 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 #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 #LAADADRES# #symbolen 0000 DDM 0000 globaal 0003 KWAD 0003 globaal 0005 EIND 0005 globaal
59 Taken van de binder Plaats voorzien voor de modules Machinecode samenvoegen Startadres bepalen Code reloceren Externe referenties in rekening brengen (Relocatietabel genereren)
60 Werking van de binder Twee stappen: Stap 1: allocatie en globale symbooltabel Stap 2: code samenvoegen, reloceren, binden, …
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 Allocatietabel ModuleBeginadres Stap 1: Allocatie- en globale symbooltabel #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 A
63 Stap 1: Allocatie- en globale symbooltabel #symbolen 0000 DDM 0000 globaal 0003 KWAD 0003 globaal 0005 EIND 0005 globaal CODE Relocatie/Binding Module B Allocatietabel ModuleBeginadres A0000 Globale Symbooltabel EtiketAdres 8 PT PT A AllocatietabelModuleBeginadres A0000 B0008 B = 0008
64 Stap 1: Allocatie- en globale symbooltabel #symbolen 0000 DDM 0000 globaal 0003 KWAD 0003 globaal 0005 EIND 0005 globaal CODE Relocatie/Binding Module B Globale Symbooltabel EtiketAdres DDM PT PT A BAllocatietabelModuleBeginadres A0000 B = 0011
65 Stap 1: Allocatie- en globale symbooltabel #symbolen 0000 DDM 0000 globaal 0003 KWAD 0003 globaal 0005 EIND 0005 globaal CODE Relocatie/Binding Module B Globale Symbooltabel EtiketAdres DDM0008 KWAD PT PT A BAllocatietabelModuleBeginadres A0000 B = 0013
66 Stap 1: Allocatie- en globale symbooltabel #symbolen 0000 DDM 0000 globaal 0003 KWAD 0003 globaal 0005 EIND 0005 globaal CODE Relocatie/Binding Module B Globale Symbooltabel EtiketAdres DDM0008 KWAD0011 EIND PT PT A BAllocatietabelModuleBeginadres A0000 B
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 Stap 2: Samenvoegen, reloceren en binden HIA.w 0,9995(-) HIA.d 1,0001(-) DRU 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 Samenvoegen
69 Stap 2: Samenvoegen, reloceren en binden HIA.w 0,9995(-) HIA.d 1,0001(-) DRU 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 EIND #LAADADRES# #LAADADRES# 0005+KWAD KWAD Module A Globale Symbooltabel EtiketAdres DDM0008 KWAD0011 EIND Samenvoegen RelocerenAllocatietabelMod.Beginadres A0000 B0008
70 Stap 2: Samenvoegen, reloceren en binden HIA.w 0,9995(-) HIA.d 1,0001(-) DRU 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 EIND #LAADADRES# #LAADADRES# 0005+KWAD KWAD Module A Globale Symbooltabel EtiketAdres DDM0008 KWAD0011 EIND0013 AllocatietabelMod.Beginadres A0000 B = 0008 Samenvoegen Reloceren = 0002
71 Stap 2: Samenvoegen, reloceren en binden HIA.w 0,0008(-) HIA.d 1,0001(-) DRU 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 EIND #LAADADRES# #LAADADRES# 0005+KWAD KWAD Module A Globale Symbooltabel EtiketAdres DDM0008 KWAD0011 EIND = 0001 Samenvoegen RelocerenAllocatietabelMod.Beginadres A0000 B = 0004
72 Stap 2: Samenvoegen, reloceren en binden HIA.w 0,0008(-) 0001 HIA.d 1,0001(-) DRU 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 EIND #LAADADRES# #LAADADRES# 0005+KWAD KWAD Module A Globale Symbooltabel EtiketAdres DDM0008 KWAD0011 EIND = 0011 Samenvoegen RelocerenAllocatietabelMod.Beginadres A0000 B = 0005
73 Stap 2: Samenvoegen, reloceren en binden HIA.w 0,0008(-) 0001 HIA.d 1,0001(-) DRU 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 EIND #LAADADRES# #LAADADRES# 0005+KWAD KWAD Module A Globale Symbooltabel EtiketAdres DDM0008 KWAD0011 EIND Samenvoegen RelocerenAllocatietabelMod.Beginadres A0000 B0008
74 Stap 2: Samenvoegen, reloceren en binden HIA.w 0,0008(-) 0001 HIA.d 1,0001(-) DRU 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 EIND Module B #relocatie/binding #LAADADRES# Samenvoegen RelocerenAllocatietabelMod.Beginadres A0000 B0008
75 Stap 2: Samenvoegen, reloceren en binden HIA.w 0,0008(-) 0001 HIA.d 1,0001(-) DRU 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 EIND Module B #relocatie/binding #LAADADRES# = 0011 Samenvoegen RelocerenAllocatietabelMod.Beginadres A0000 B = 0008
76 Stap 2: Samenvoegen, reloceren en binden HIA.w 0,0008(-) 0001 HIA.d 1,0001(-) DRU 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 EIND #relocatie/binding #LAADADRES# Samenvoegen RelocerenAllocatietabelMod.Beginadres A0000 B0008
77 Stap 2: Samenvoegen, reloceren en binden Allocatietabel Mod.Beginadres A0000 B = 0002 Module A Samenvoegen Reloceren Startadres 0002
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 = = = 0005 Samenvoegen Reloceren Startadres 0002 Symbooltabel
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 = = = 0013 Samenvoegen Reloceren Startadres Symbooltabel 0002
80 Stap 2: Samenvoegen, reloceren en binden Samenvoegen Reloceren #relocatie/binding EIND #LAADADRES# #LAADADRES# 0005+KWAD KWAD Module A Startadres Symbooltabel Allocatietabel Mod.Beginadres A0000 B = = = 0005 #relocatie/binding #LAADADRES# #LAADADRES# #LAADADRES# 0005+#LAADADRES# #LAADADRES# Relocatietabel 0002
81 Stap 2: Samenvoegen, reloceren en binden Samenvoegen Reloceren Startadres Symbooltabel Allocatietabel Mod.Beginadres A0000 B = 0008 #relocatie/binding #LAADADRES# #LAADADRES# #LAADADRES# 0005+#LAADADRES# #LAADADRES# Relocatietabel Module B #relocatie/binding #LAADADRES# 0008+#LAADADRES# #LAADADRES# 0002
82 Stap 2: Samenvoegen, reloceren en binden Samenvoegen Reloceren Startadres Symbooltabel #relocatie/binding #LAADADRES# #LAADADRES# Relocatietabel #LAADADRES# 0005+#LAADADRES# #LAADADRES# 0008+#LAADADRES# #LAADADRES# 0002
83 Stap 2: Samenvoegen, reloceren en binden Samenvoegen Reloceren Startadres Symbooltabel #relocatie/binding Relocatietabel #LAADADRES# 0005+#LAADADRES# #LAADADRES# 0008+#LAADADRES# #LAADADRES# 0002
84 Stap 2: Uitvoerbaar programma #relocatie/binding #LAADADRES# 0005+#LAADADRES# #LAADADRES# 0008+#LAADADRES# #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 HIA.w 0,0008(-) 0001 HIA.d 1,0001(-) DRU SBR.d 0011(-) DRU STP 0011 SBR.d 0011(-) KTG VER.w 0,0000(1) HIA.w 0,0000(1) KTG
85 Programmabibliotheek Bij vertaler Verzameling subroutines Vertaald Samengevoegd in bibliotheek Binder: Symbolisch adres niet gedefinieerd Gezocht in de bibliotheek
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 Cursustekst Hoofdstuk 3: pag. 63 pag. 77