870 likes | 1.08k Views
SOCS. Hoofdstuk 3 Basisprogrammatuur. Inhoud. De Vertaler De Voorvertaler De Lader De Binder De Vertolker Het Speurprogramma Het Opstarten van de Computer. Inhoud. De Vertaler De Voorvertaler De Lader De Binder Verantwoording Modules + Vertaler directieven Taken van de Binder
E N D
SOCS Hoofdstuk 3 Basisprogrammatuur
Inhoud • De Vertaler • De Voorvertaler • De Lader • De Binder • De Vertolker • Het Speurprogramma • Het Opstarten van de Computer
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
Project Vertaler druk: DRU … 7299999999 … som: OPT R0,b … Vertaler 2131000000 … … 1221000010 9999999999 … main: … BIG R0,a STP a: RESGR 1 Vertaler Module Vertaalde Module
Binder 7299999999 … 7299999999 … Binder 2131000000 … 2131000040 … … 1221000066 9999999999 … … 1221000010 9999999999 … Uitvoerbaar programma Vertaalde Module
Zelfde Resultaat 7299999999 … druk: DRU … Vertaler 2131000040 … som: OPT R0,b … … 1221000066 9999999999 … main: … BIG R0,a STP a: RESGR 1 Uitvoerbaar programma SamengevoegdeModules
Verantwoording • Samenvoegen van bronprogramma: • Unieke symbolische adressen ? • Stricte afspraken nodig • Hervertaling duurt langer • Verbetering fout in een module • Programmabibliotheken • Reeds vertaalde deelprogramma’s • Vb. parse (ASCII-string binair getal), sqrt, sort, … • Broncode niet beschikbaar • Bovendien onpraktisch om manueel samen te voegen
main: … SBR kwad … … kwad: … HIA R0,A … Module A Module B Modules • Gedeelte van een programma • Hoofdprogramma • Procedure of Functie • Verwijzigingen symbolische adressen uit andere modules *** fout *** lijn 17: ‘kwad’ niet gedefinieerd
EXTERN kwad main: … SBR kwad … GLOBAAL kwad … kwad: … HIA R0,A … Module A Module B Vertaler directieven • EXTERN symbolisch_adres • symb.adres is in een andere module gedefinieerd • GLOBAAL symbolisch_adres • andere module mag naar symb.adres verwijzen
EXTERN kwad STARTPR main main: … SBR kwad … GLOBAAL kwad … kwad: … HIA R0,A … Module A Module B Vertaler directieven • STARTPR adres • De uitvoering start bij “adres” • Moet in 1 module aanwezig zijn
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
9999999999 9999999991 Hoofding 0000000024 0000000086 0000000002 0000000002 0000000100 0000000100 0000000200 0000000200 Machine- Code 1131100001 1131100001 … … #symbolen … Symbool-tabel … #symbolen #reloc/bind. … Relocatie-& Bindings-tabel … #relocatie … … Objectmodule Uitvoerbaar programma Type Lengte Startadres Uitvoerbaarprogramma Object-module
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
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
Afspraak HIA.w R0,EIND-MACHT Vertaler 1111009995 Schrijven als … HIA.w 0,9995(-)
PT LT 0 1 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):
PT LT 0 1 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):
PT LT 0 2 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):
PT LT 0 3 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): 2
PT LT 2 4 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): 3
PT LT 3 5 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): 4
PT LT 4 6 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): 5
PT LT 5 7 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): 6
PT LT 6 8 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): 7
PT LT 7 9 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): 8
PT LT 7 10 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): 8
PT LT St 0 1 -1 Vertaler Binder Vertaler (2de stap): 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
PT LT St -1 0 1 Vertaler Binder Vertaler (2de stap): 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 2
PT LT St 0 2 2 Vertaler Binder Vertaler (2de stap): 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
PT LT St 0 3 2 Vertaler Binder Vertaler (2de stap): 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 0000000100 0000001000 2
PT LT St 2 4 2 Vertaler Binder Vertaler (2de stap): 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 0000000100 0000001000 HIA.w 0,9995(-) 0002 +EIND 0002 -#LAADADRES# 3 0000 – 0005 = 9995
PT LT St 3 5 2 Vertaler Binder Vertaler (2de stap): 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 0000000100 0000001000 HIA.w 0,9995(-) DRU 0002 +EIND 0002 -#LAADADRES# 4
PT LT St 4 6 2 Vertaler Binder Vertaler (2de stap): 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 0000000100 0000001000 HIA.w 0,9995(-) DRU HIA.d 1,0001(-) 0002 +EIND 0002 -#LAADADRES# 0004 +#LAADADRES# 5 0000 + 1 = 0001
PT LT St 5 7 2 Vertaler Binder Vertaler (2de stap): 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 0000000100 0000001000 HIA.w 0,9995(-) DRU HIA.d 1,0001(-) SBR.d 0000(-) 0002 +EIND 0002 -#LAADADRES# 0004 +#LAADADRES# 0005 +KWAD 6
PT LT St 6 8 2 Vertaler Binder Vertaler (2de stap): 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 0000000100 0000001000 HIA.w 0,9995(-) DRU HIA.d 1,0001(-) SBR.d 0000(-) DRU 0002 +EIND 0002 -#LAADADRES# 0004 +#LAADADRES# 0005 +KWAD 7
PT LT St 7 9 2 Vertaler Binder Vertaler (2de stap): 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 0000000100 0000001000 HIA.w 0,9995(-) DRU HIA.d 1,0001(-) SBR.d 0000(-) DRU STP 0002 +EIND 0002 -#LAADADRES# 0004 +#LAADADRES# 0005 +KWAD 8
PT LT St 8 10 2 Vertaler Binder Vertaler (2de stap): 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 0000000100 0000001000 HIA.w 0,9995(-) DRU HIA.d 1,0001(-) SBR.d 0000(-) DRU STP 0002 +EIND 0002 -#LAADADRES# 0004 +#LAADADRES# 0005 +KWAD
0000000100 PT St 2 8 0000001000 0000000100 HIA.w 0,9995(-) 0000001000 DRU HIA.w 0,9995(-) HIA.d 1,0001(-) DRU SBR.d 0000(-) DRU HIA.d 1,0001(-) STP SBR.d 0000(-) DRU STP 0002 +EIND 0002 -#LAADADRES# 0004 +#LAADADRES# 0005 +KWAD Vertaler Binder 9999999999 0000000008 0000000002
0000000100 PT St 8 2 0000001000 HIA.w 0,9995(-) DRU HIA.d 1,0001(-) SBR.d 0000(-) DRU #relocatie/binding STP 0002 +EIND #symbolen 0002 -#LAADADRES# KWAD ???? extern 0004 +#LAADADRES# 0002 +EIND 0002 -#LAADADRES# 0005+KWAD EIND ???? extern 0004 +#LAADADRES# 0005 +KWAD X 0000 lokaal PRG 0002 lokaal MACHT 0005 lokaal Vertaler Binder
PT LT 0 1 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):
PT LT 0 1 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):
PT LT 0 2 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): 1
PT LT 1 3 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): 2
PT LT 2 4 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): 3
PT LT 3 5 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): 4
PT LT 4 6 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): 5
PT LT 5 7 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): 6
PT LT 6 8 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):
PT LT St 0 1 -1 Vertaler Binder Vertaler (2de stap): GLOBAAL DDM,KWAD,EIND DDM: SBR KWAD VER R0,R1 KTG KWAD: HIA R0,R1 VER R0,R1 EIND: KTG EINDPR
PT LT St 0 1 -1 Vertaler Binder Vertaler (2de stap): GLOBAAL DDM,KWAD,EIND DDM: SBR KWAD VER R0,R1 KTG KWAD: HIA R0,R1 VER R0,R1 EIND: KTG EINDPR