De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

1 SOCS Hoofdstuk 3 Basisprogrammatuur. 2 Inhoud De Vertaler De Voorvertaler De Lader De Binder De Vertolker Het Speurprogramma Het Opstarten van de Computer.

Verwante presentaties


Presentatie over: "1 SOCS Hoofdstuk 3 Basisprogrammatuur. 2 Inhoud De Vertaler De Voorvertaler De Lader De Binder De Vertolker Het Speurprogramma Het Opstarten van de Computer."— Transcript van de presentatie:

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


Download ppt "1 SOCS Hoofdstuk 3 Basisprogrammatuur. 2 Inhoud De Vertaler De Voorvertaler De Lader De Binder De Vertolker Het Speurprogramma Het Opstarten van de Computer."

Verwante presentaties


Ads door Google