socs

89
1 SOCS Hoofdstuk 3 Basisprogrammatuu r

Upload: nasim-farley

Post on 01-Jan-2016

28 views

Category:

Documents


0 download

DESCRIPTION

SOCS. Hoofdstuk 3 Basisprogrammatuur. Inhoud. De Vertaler De Voorvertaler De Lader De absolute lader De relocerende lader Dynamische relocatie De Binder De Vertolker Het Speurprogramma Het Opstarten van de Computer. Lader. RAM. 1131000005 7299999999 2131000006 7299999999 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: SOCS

1

SOCS

Hoofdstuk 3

Basisprogrammatuur

Page 2: SOCS

2

Inhoud

De Vertaler De Voorvertaler De Lader

De absolute lader De relocerende lader Dynamische relocatie

De Binder De Vertolker Het Speurprogramma Het Opstarten van de Computer

Page 3: SOCS

3

Lader

LaderLader

RAM

Uitvoerbaar programma(machinetaal)

1131000005

729999999921310000067299999999999999999900000100000000020000

1131000005

729999999921310000067299999999999999999900000100000000020000

Page 4: SOCS

4

Lader

RAM

1131000005

729999999921310000067299999999999999999900000100000000020000

1131000005

729999999921310000067299999999999999999900000100000000020000

LaderLader

Page 5: SOCS

5

Verantwoording

Lader nodig? Vertaler: rol van lader?

Vertalen Uitvoeren Telkens opnieuw! Tijd!

| Vertaler | > | Lader | Minder geheugen beschikbaar

RAM

1131000005729999999921310000067299999999999999999900000100000000020000

VertaleVertalerr

HIA R0,ADRUOPT R0,BDRUSTP

A: 10000 B: 20000

Page 6: SOCS

6

Verantwoording

RAM

VertaleVertalerr

HIA R0,ADRUOPT R0,BDRUSTP

A: 10000 B: 20000

1131000005729999999921310000067299999999999999999900000100000000020000

Schijf

Page 7: SOCS

7

Verantwoording

RAM

1131000005729999999921310000067299999999999999999900000100000000020000

LaderLader

1131000005729999999921310000067299999999999999999900000100000000020000

Page 8: SOCS

8

Lader

Deel van het besturingssysteem Zie ook opstarten van een computer

Verschillende Lader-algoritmes Absolute Lader Relocerende Lader

Extra Apparatuur Dynamische adresvertaling

Page 9: SOCS

9

Absolute Lader

Uitvoerbaar programma ongewijzigd in geheugen

Meest elementaire geval Programma steeds vanaf adres 0000 geladen

Programma in invoerorgaan Eerste getal = lengte van het programma Lader geladen vanaf adres 9000

00000001457299999999……symb.tabel…

Lengte aanduidingLengte aanduiding

145 bevelen/constanten145 bevelen/constanten

Page 10: SOCS

10

Absolute Lader

Algoritme: Lengte inlezen Opeenvolgende getallen

inlezen in opeenvolgende geheugenplaatsen wegbergen

Start uitvoering

00000000

00020002

00030003

00040004

00050005

00001001

7199999999

0000000000

00000000000000000000

1221000010

0000000000

adresadres

int lengte, *adres;

main()

{

lengte = getint();

adres = 0;

while (lengte > 0)

{

*adres++ = getint();

lengte--;

}

/* start uitvoering op adres 0 */

}adres = 0;goto *adres;

Page 11: SOCS

11

Absolute Lader

int lengte, *adres;main() {

lengte = getint();adres = 0;while (lengte > 0){

*adres++ = getint();lengte--;

}/* start uitvoering op adres 0 */

}

LEZ | lengteHIA R2,R0

| Absolute Lader| Lengte R2| Adres R1

Page 12: SOCS

12

Absolute Lader

int lengte, *adres;main() {

lengte = getint();adres = 0;while (lengte > 0){

*adres++ = getint();lengte--;

}/* start uitvoering op adres 0 */

}

| Absolute Lader| Lengte R2| Adres R1 LEZ | Lengte HIA R2,R0 HIA.a R1,0

Page 13: SOCS

13

Absolute Lader

int lengte, *adres;main() {

lengte = getint();adres = 0;while (lengte > 0){

*adres++ = getint();lengte--;

}/* start uitvoering op adres 0 */

}

| Absolute Lader| Lengte R2| Adres R1 LEZ | Lengte HIA R2,R0 HIA.a R1,0

LUS: VGL.w R2,0 VSP KLG,ewh

Page 14: SOCS

14

Absolute Lader

int lengte, *adres;main() {

lengte = getint();adres = 0;while (lengte > 0){

*adres++ = getint();lengte--;

}/* start uitvoering op adres 0 */

}

| Absolute Lader| Lengte R2| Adres R1 LEZ | Lengte HIA R2,R0 HIA.a R1,0LUS: VGL.w R2,0 VSP KLG,ewh

LEZ | Instr.BIG R0,0(R1+)

Page 15: SOCS

15

Absolute Lader

int lengte, *adres;main() {

lengte = getint();adres = 0;while (lengte > 0){

*adres++ = getint();lengte--;

}/* start uitvoering op adres 0 */

}

| Absolute Lader| Lengte R2| Adres R1 LEZ | Lengte HIA R2,R0 HIA.a R1,0LUS: VGL.w R2,0 VSP KLG,ewh LEZ | Instr. BIG R0,0(R1+)

AFT.w R2,1

Page 16: SOCS

16

Absolute Lader

int lengte, *adres;main() {

lengte = getint();adres = 0;while (lengte > 0){

*adres++ = getint();lengte--;

}/* start uitvoering op adres 0 */

}

| Absolute Lader| Lengte R2| Adres R1 LEZ | Lengte HIA R2,R0 HIA.a R1,0LUS: VGL.w R2,0 VSP KLG,ewh LEZ | Instr. BIG R0,0(R1+) AFT.w R2,1

SPR LUS

Page 17: SOCS

17

Absolute Lader

int lengte, *adres;main() {

lengte = getint();adres = 0;while (lengte > 0){

*adres++ = getint();lengte--;

}/* start uitvoering op adres 0 */

}

| Absolute Lader| Lengte R2| Adres R1 LEZ | Lengte HIA R2,R0 HIA.a R1,0LUS: VGL.w R2,0 VSP KLG,ewh LEZ | Instr. BIG R0,0(R1+) AFT.w R2,1 SPR LUS

0 | Start

Page 18: SOCS

18

Absolute Lader

int lengte, *adres;main() {

lengte = getint();adres = 0;while (lengte > 0){

*adres++ = getint();lengte--;

}/* start uitvoering op adres 0 */

}

| Absolute Lader| Lengte R2| Adres R1 LEZ | Lengte HIA R2,R0 HIA.a R1,0LUS: VGL.w R2,0 VSP KLG,0 | Start LEZ | Instr. BIG R0,0(R1+) AFT.w R2,1 SPR LUS EINDPR

Page 19: SOCS

19

Absolute Lader

Simulator? Truukjes

Zelf lengte aanduiding toevoegen

Invoer uit bestand -invoer bestandsnaam

| Absolute Lader| Lengte R2| Adres R1 LEZ | Lengte HIA R2,R0 HIA.a R1,0LUS: VGL.w R2,0 VSP KLG,0 | Start LEZ | Instr. BIG R0,0(R1+) AFT.w R2,1 SPR LUS EINDPR

Page 20: SOCS

20

Absolute Lader

Simulator? | Absolute Lader| Lengte R2| Adres R1 LEZ | Lengte HIA R2,R0 HIA.a R1,0LUS: VGL.w R2,0 VSP KLG,0 | Start LEZ | Instr. BIG R0,0(R1+) AFT.w R2,1 SPR LUS EINDPR

00000000

00020002

00030003

00040004

00050005

00001001

7199999999

1111100000

32212000003311200000

1122200000

7199999999

00060006

00080008

00090009

00100010

00110011

00007007

1224010000

3121900003

42342423421233456788

2211200001

3453453533

1224010000

3121900003

7299999999

2211200001

Page 21: SOCS

21

Absolute Lader

Simulator? Truukjes

Zelf lengte aanduiding toevoegen

Invoer uit bestand -invoer bestandsnaam

Lader vanaf 9000?

| Absolute Lader| Lengte R2| Adres R1 LEZ | Lengte HIA R2,R0 HIA.a R1,0LUS: VGL.w R2,0 VSP KLG,0 | Start LEZ | Instr. BIG R0,0(R1+) AFT.w R2,1 SPR LUS EINDPR

Page 22: SOCS

22

Absolute Lader

Simulator? Truukjes

Zelf lengte aanduiding toevoegen

Invoer uit bestand -invoer bestandsnaam

Lader vanaf 9000!

| Absolute lader LEZ | Lengte HIA R2,R0 HIA.a R1,0LUS: VGL.w R2,0 VSP KLG,0 | Start LEZ | Instr. BIG R0,0(R1+) AFT.w R2,1 SPR LUS EINDPR

SPR LADER RESGR 8999LADER:

Page 23: SOCS

23

00000000

00020002

00030003

00040004

00050005

00001001

3121909000

0000000000

00000000000000000000

0000000000

0000000000

90009000

90029002

90039003

90049004

90059005

90019001

7199999999

1111100000

32210000003311200000

1122200000

7199999999

90069006

90089008

99007007

1224010000

31219090032211200001

Absolute Lader

| Absolute lader SPR LADER RESGR 8999LADER: LEZ | Lengte HIA R2,R0 HIA.a R1,0 LUS: VGL.w R2,0 VSP KLG,0 | Start LEZ | Instr. BIG R0,0(R1+) AFT.w R2,1 SPR LUS EINDPR

1224010000

3121900003

7299999999

2211200001

Page 24: SOCS

24

Eenvoudig besturingssysteem

≠ programma’s 1 na 1 inladen en uitvoeren

Werkwijze: In elk programma:

STP SPR 9000 Programma’s vertalen In elk vertaald progr:

“Lengte” inlassen Symbooltabel weglaten

Alle programma’s na elkaar in 1 bestand

lengteA

CodeA

lengteB

CodeB

lengteC

CodeC

RAM

CodeA

Lader

CodeB

VSP KLG,0

CodeC

SPR 9000SPR 9000

Page 25: SOCS

25

Absolute Lader

Verfijning Programma NIET ALTIJD vanaf adres 0000 geladen

Meerdere programma’s in het geheugen!

Probleem Adressen kloppen niet

Vertaler symbooltabel (PT = 0)

Page 26: SOCS

26

Absolute Lader HIA R1,A OPT.w R1,B-A BIG R1,B STPA: 10B: RESGR 1

HIA R1,A OPT.w R1,B-A BIG R1,B STPA: 10B: RESGR 1

HIA R1,A OPT.w R1,B-A BIG R1,B STPA: 10B: RESGR 1

00000000

00020002

00030003

00040004

00050005

00001001

11311000040004

12211000050005

00000000109999999999

2111100001

0000000000 A B

00330000

03020302

03030303

03040304

03050305

00301301

11311003040304

12211003050305

0000000010

9999999999

2111100001

0000000000 A B

00110000

01020102

01030103

01040104

01050105

00101101

11311001040104

12211001050105

00000000109999999999

2111100001

0000000000

A B

Page 27: SOCS

27

Absolute Lader

Lader kan programma niet wijzigen Oplossing:

Vertaler moet correcte adressen genereren Programmeur Vertaler: “Te laden vanaf XXX” Vertaler-directief

LAADGR laadadresLAADGR laadadres Vertaler aanpassen:

Stap 1: PT Laadadres (i.p.v. 0)

Vertaler Lader: “Te laden vanaf XXX” Stap 2: Lengte en Laadadres in uitvoerbaar programma

Next

Page 28: SOCS

28

Aanpassing Vertaler

Stap 1Lijnteller (LT = 1)Programmateller (PT = 0)Symbooltabel (ST = )

Lijn per lijn inlezen:

Commentaarlijn: doe niets

? NAAM:NAAM: (NAAM, PT) in ST

Instructie? PT PT + 1

Constante(n)/RESGR n? PT PT + n

Fout? *** fout *** lijn LT: …

LT LT + 1

LAADGR adres? Laadadres = adres; PT = adres

Laadadres = 0

Page 29: SOCS

29

Aanpassing Vertaler

Stap 1Lijnteller (LT = 1)Programmateller (PT = 0)Symbooltabel (ST = )

Lijn per lijn inlezen:

Commentaarlijn: doe niets

? NAAM:NAAM: (NAAM, PT) in ST

Instructie? PT PT + 1

Constante(n)/RESGR n? PT PT + n

Fout? *** fout *** lijn LT: …

LT LT + 1

Stap 2Lijnteller (LT = 1)Symbooltabel (ingevuld in stap 1)

Lijn per lijn inlezen: Commentaarlijn:

doe niets Instructie?

genereer code Constante(n)

genereer constante(n)

RESGR n? genereer n 0-

constanten Fout?

*** fout *** lijn LT: … LT LT + 1

Schrijf lengte (= PT – laadadres) en Laadadres

LAADGR adres? Laadadres = adres; PT = adres

Laadadres = 0

Page 30: SOCS

30

Absolute Lader

LAADGR 300LAADGR 300 HIA R1,A OPT.w R1,B-A BIG R1,B STPA: 10B: RESGR 1

11311003040304

12211003050305

00000000109999999999

2111100001

0000000000

0000000006000600000003000300

#symbolen A 03040304 B 03050305

Lengte Lengte Laadadres Laadadres

HoofdingHoofding

Programma-Programma-codecode

Symbool-Symbool-tabeltabel

Bronprogramma

Uitvoerbaar programma

Page 31: SOCS

31

Absolute Lader LAADGR 300LAADGR 300 HIA R1,A OPT.w R1,B-A BIG R1,B STPA: 10B: RESGR 1

LAADGR 100LAADGR 100 HIA R1,A OPT.w R1,B-A BIG R1,B STPA: 10B: RESGR 1

HIA R1,A OPT.w R1,B-A BIG R1,B STPA: 10B: RESGR 1

11311000040004

12211000050005

2111100001

00000000060006

00000000000000

11311001040104

12211001050105

2111100001

00000000060006

00000001000100

11311003040304

12211003050305

2111100001

00000000060006

00000003000300

VertaleVertalerr

VertaleVertalerr

VertaleVertalerr

Page 32: SOCS

32

Absolute Lader00000000

00020002

00030003

00040004

00050005

00001001

11311000040004

12211000050005

00000000109999999999

2111100001

0000000000 A B

00330000

03020302

03030303

03040304

03050305

00301301

11311003040304

12211003050305

0000000010

9999999999

2111100001

0000000000 A B

00110000

01020102

01030103

01040104

01050105

00101101

11311001040104

12211001050105

00000000109999999999

2111100001

0000000000

A B

11311000040004

12211000050005

2111100001

00000000060006

00000000000000

11311001040104

12211001050105

2111100001

00000000060006

00000001000100

11311003040304

12211003050305

2111100001

00000000060006

00000003000300

LadeLaderr

Page 33: SOCS

33

Absolute Lader

Algoritme Lengte inlezen

Opeenvolgende getallen inlezen opeenvolgende geheugenplaatsen

Start uitvoering

int lengte, *adres;main() {

lengte = getint();

adres = 0;while (lengte > 0){

*adres++ = getint();lengte--;

}/* start uitvoering op adres 0 */

}

Laadadres inlezen

(begin bij Laadadres)

Sprong Laadadres

laadadr = (int *) getint();adres = laadadr;

vanaf laadadr */

, *laadadr;

goto *laadadr;

Page 34: SOCS

34

Absolute Lader

int lengte, adres, instr, *laadadr;main() {

lengte = getint();laadadr = (int *) getint();adres = laadadr;while (lengte > 0){

*adres++ = getint();lengte--;

} /* start uitvoering vanaf laadadr */}

| Absolute Lader| Lengte R2| Adres R1 LEZ | Lengte HIA R2,R0 HIA.a R1,0 LUS: VGL.w R2,0 VSP KLG,0 | Start LEZ | Instr BIG R0,0(R1+) AFT.w R2,1 SPR LUS EINDPR

LEZ | LaadadresHIA R3,R0

| Laadadres R3

(R3)

HIA R1,R3

Page 35: SOCS

35

Relocerende Lader

Nadeel absolute lader: Programmeur moet vóór vertaling

laadadres kennen

Vertaler Lader: “Hoe adressen aanpassen” Relocatietabel

relatief adresrelatief adres bewerkingbewerking

Page 36: SOCS

36

Vertaler Relocerende Lader

HIA R1,A OPT.w R1,B-A BIG R1,B STPA: 10B: RESGR 1

Lengte Lengte Laadadres Laadadres

11311000040004

12211000050005

00000000109999999999

2111100001

0000000000

0000000006000600000000000000

#symbolen A 00040004 B 00050005 #relocatie 0000 +#LAADADRES#+#LAADADRES#

0002 +#LAADADRES#+#LAADADRES#

9999999999999999999900000000

00020002

00030003

00040004

00050005

00001001

Page 37: SOCS

37

Vertaler Relocerende Lader

HIA R1,A OPT.w R1,B-A BIG R1,B STPA: 10B: RESGR 1

Vertaler (1ste stap):

Symb.Symb.AdresAdres

Abs.Abs.AdresAdres

A 4

B 5

Page 38: SOCS

38

Vertaler Relocerende Lader

HIA R1,A OPT.w R1,B-A BIG R1,B STPA: 10B: RESGR 1

0 PPTT

1 LLTT

Symb.Symb.AdresAdres

Abs.Abs.AdresAdres

A 4

B 5

Vertaler (2de stap):111113131110000040004

0000 +#LAADADRES#0000 +#LAADADRES#

Page 39: SOCS

39

Vertaler Relocerende Lader

HIA R1,A OPT.w R1,B-A BIG R1,B STPA: 10B: RESGR 1

1 PPTT

2 LLTT

Symb.Symb.AdresAdres

Abs.Abs.AdresAdres

A 4

B 5

211113131110000040004

0000 +#LAADADRES#0000 +#LAADADRES#

21211111110000010001

0001 +#LAADADRES#0001 +#LAADADRES#0001 -#LAADADRES#0001 -#LAADADRES#

Vertaler (2de stap):

Page 40: SOCS

40

Vertaler Relocerende Lader

HIA R1,A OPT.w R1,B-A BIG R1,B STPA: 10B: RESGR 1

2 PPTT

3 LLTT

Symb.Symb.AdresAdres

Abs.Abs.AdresAdres

A 4

B 5

311113131110000040004

0000 +#LAADADRES#0000 +#LAADADRES#

21211111110000010001

0001 +#LAADADRES#0001 +#LAADADRES#0001 -#LAADADRES#0001 -#LAADADRES#

12122121110000050005

0002 +#LAADADRES#0002 +#LAADADRES#

Vertaler (2de stap):

Page 41: SOCS

41

Vertaler Relocerende Lader

HIA R1,A OPT.w R1,B-A BIG R1,B STPA: 10B: RESGR 1

3 PPTT

4 LLTT

Symb.Symb.AdresAdres

Abs.Abs.AdresAdres

A 4

B 5

411113131110000040004

0000 +#LAADADRES#0000 +#LAADADRES#

21211111110000010001

0001 +#LAADADRES#0001 +#LAADADRES#0001 -#LAADADRES#0001 -#LAADADRES#

12122121110000050005

0002 +#LAADADRES#0002 +#LAADADRES#

99999999999999999999

Vertaler (2de stap):

Page 42: SOCS

42

Vertaler Relocerende Lader

HIA R1,A OPT.w R1,B-A BIG R1,B STPA: 10B: RESGR 1

4 PPTT

5 LLTT

Symb.Symb.AdresAdres

Abs.Abs.AdresAdres

A 4

B 5

511113131110000040004

0000 +#LAADADRES#0000 +#LAADADRES#

21211111110000010001

0001 +#LAADADRES#0001 +#LAADADRES#0001 -#LAADADRES#0001 -#LAADADRES#

12122121110000050005

0002 +#LAADADRES#0002 +#LAADADRES#

9999999999999999999900000000100000000010

Vertaler (2de stap):

Page 43: SOCS

43

Vertaler Relocerende Lader

HIA R1,A OPT.w R1,B-A BIG R1,B STPA: 10B: RESGR 1

5 PPTT

6 LLTT

Symb.Symb.AdresAdres

Abs.Abs.AdresAdres

A 4

B 5

11113131110000040004

0000 +#LAADADRES#0000 +#LAADADRES#

6

21211111110000010001

0001 +#LAADADRES#0001 +#LAADADRES#0001 -#LAADADRES#0001 -#LAADADRES#

12122121110000050005

0002 +#LAADADRES#0002 +#LAADADRES#

999999999999999999990000000010000000001000000000000000000000

Vertaler (2de stap):

Page 44: SOCS

44

Vertaler Relocerende Lader

HIA R1,A OPT.w R1,B-A BIG R1,B STPA: 10B: RESGR 1

6 PPTT

6 LLTT

Symb.Symb.AdresAdres

Abs.Abs.AdresAdres

A 4

B 5

11113131110000040004

0000 +#LAADADRES#0000 +#LAADADRES#

21211111110000010001

0001 +#LAADADRES#0001 +#LAADADRES#0001 -#LAADADRES#0001 -#LAADADRES#

12122121110000050005

0002 +#LAADADRES#0002 +#LAADADRES#

999999999999999999990000000010000000001000000000000000000000

Vertaler (2de stap):

Page 45: SOCS

45

Vertaler Relocerende Lader

6 PPTT

Symb.Symb.AdresAdres

Abs.Abs.AdresAdres

A 4

B 5

11113131110000040004

0000 +#LAADADRES#0000 +#LAADADRES#

21211111110000010001

0001 +#LAADADRES#0001 +#LAADADRES#0001 -#LAADADRES#0001 -#LAADADRES#

12122121110000050005

0002 +#LAADADRES#0002 +#LAADADRES#

999999999999999999990000000010000000001000000000000000000000

11311000040004

12211000050005

00000000109999999999

2111100001

0000000000

0000000006000699999999999999999999

#symbolen A 00040004 B 00050005 #relocatie 0000 +#LAADADRES#+#LAADADRES#

0002 +#LAADADRES#+#LAADADRES#

Page 46: SOCS

46

Relocerende Lader

Twee stappen: Stap 1:

Uitvoerbaar programma letterlijk geheugen Stap 2: Relocatie-stap:

Adressen aanpassen

Page 47: SOCS

47

Relocerende Lader

11311000040004

12211000050005

0000000010

9999999999

2111100001

0000000000

00000000060006

99999999999999999999

#symbolen

A 00040004

B 00050005

#relocatie

0000 +#LAADADRES#+#LAADADRES#

0002 +#LAADADRES#+#LAADADRES#

00330000

03020302

03030303

03040304

03050305

00301301

1112323423

5223241231

4563453242

1231231231

0000000000

9231231231

Stap 1

11311000040004

12211000050005

0000000010

9999999999

2111100001

0000000000

Laadadres = 0300

Page 48: SOCS

48

Relocerende Lader

11311000040004

12211000050005

0000000010

9999999999

2111100001

0000000000

00000000060006

99999999999999999999

#symbolen

A 00040004

B 00050005

#relocatie

0000 +#LAADADRES#+#LAADADRES#

0002 +#LAADADRES#+#LAADADRES#

00330000

03020302

03030303

03040304

03050305

00301301

11311000040004

12211000050005

0000000010

9999999999

2111100001

0000000000

Stap 2Laadadres = 0300

Page 49: SOCS

49

Relocerende Lader

11311000040004

12211000050005

0000000010

9999999999

2111100001

0000000000

00000000060006

99999999999999999999

#symbolen

A 00040004

B 00050005

#relocatie

0000 +#LAADADRES#+#LAADADRES#

0002 +#LAADADRES#+#LAADADRES#

00330000

03020302

03030303

03040304

03050305

00301301

11311000040004

12211000050005

0000000010

9999999999

2111100001

0000000000

Stap 2Laadadres = 0300

0000+0000+03000300 = 0300 = 0300

11311003040304

1131100004 + 1131100004 + 03000300 = 1131100304 = 1131100304

Page 50: SOCS

50

Relocerende Lader

11311000040004

12211000050005

0000000010

9999999999

2111100001

0000000000

00000000060006

99999999999999999999

#symbolen

A 00040004

B 00050005

#relocatie

0000 +#LAADADRES#+#LAADADRES#

0002 +#LAADADRES#+#LAADADRES#

00330000

03020302

03030303

03040304

03050305

00301301

11311003040304

12211000050005

0000000010

9999999999

2111100001

0000000000

Stap 2Laadadres = 0300

0002+0002+03000300 = 0302 = 0302

12211003050305

1221100005 + 1221100005 + 03000300 = 1221100305 = 1221100305

Page 51: SOCS

51

Relocerende Lader

00330000

03020302

03030303

03040304

03050305

00301301

11311003040304

12211003050305

0000000010

9999999999

2111100001

0000000000

LAADGR 300LAADGR 300 HIA R1,A OPT.w R1,B-A BIG R1,B STPA: 10B: RESGR 1

11311003040304

12211003050305

2111100001

00000000060006

00000003000300

VertaleVertalerr

Page 52: SOCS

52

Relocerende Lader

Voordelen: Programmeur NIET laadadres opgeven Keuze uitgesteld tot uitvoeringstijd

Vertaalde progr. kan om het even waar geladen

Gevolgen vertaler: Kleine uitbreiding 2de stap

= Statische Relocatie Relocatie eenmaal, vóór uitvoering

Page 53: SOCS

53

Dynamische Relocatie

Hardware aanpassen: Geheugenbeheereenheid (GBE)

Memory Management Unit (MMU)

Dynamische Relocatie: Adressen aangepast TIJDENS uitvoering

Vergelijk: Indexatie: adres tijdens uitvoering berekend Dyn. Relocatie: alle adressen herberekend

Page 54: SOCS

54

CVO

Besturingsorgaan

Dynamische Relocatie HIA R1,A OPT.w R1,B-A BIG R1,B STPA: 10B: RESGR 1

00330000

03020302

03030303

03040304

03050305

00301301

11311000040004

12211000050005

00000000109999999999

2111100001

0000000000

BTBT 00000000

9999999999BRBR

0000000000OROR

1234567890R1R1

GBE

brbr 03000300 RAMRAM

GARGAR 1234

1234567890GBRGBR

ophalen

Page 55: SOCS

55

CVO

Besturingsorgaan

Dynamische Relocatie HIA R1,A OPT.w R1,B-A BIG R1,B STPA: 10B: RESGR 1

00330000

03020302

03030303

03040304

03050305

00301301

11311000040004

12211000050005

00000000109999999999

2111100001

0000000000

BTBT 00000000

9999999999BRBR

0000000000OROR

1234567890R1R1

GBE

brbr 03000300 RAMRAM

GARGAR 0300

1234567890GBRGBR

READ

ophalen

Page 56: SOCS

56

CVO

Besturingsorgaan

Dynamische Relocatie HIA R1,A OPT.w R1,B-A BIG R1,B STPA: 10B: RESGR 1

00330000

03020302

03030303

03040304

03050305

00301301

11311000040004

12211000050005

00000000109999999999

2111100001

0000000000

BTBT 00000000

9999999999BRBR

0000000000OROR

1234567890R1R1

GBE

brbr 03000300 RAMRAM

GARGAR 0300

READ

1131100004GBRGBR

ophalen

Page 57: SOCS

57

CVO

Besturingsorgaan

Dynamische Relocatie HIA R1,A OPT.w R1,B-A BIG R1,B STPA: 10B: RESGR 1

00330000

03020302

03030303

03040304

03050305

00301301

11311000040004

12211000050005

00000000109999999999

2111100001

0000000000

BTBT 00010001

1131100004BRBR

0000000000OROR

1234567890R1R1

GBE

brbr 03000300 RAMRAM

GARGAR 0300

1131100004GBRGBR

ophalen

Page 58: SOCS

58

CVO

Besturingsorgaan

Dynamische Relocatie HIA R1,A OPT.w R1,B-A BIG R1,B STPA: 10B: RESGR 1

00330000

03020302

03030303

03040304

03050305

00301301

11311000040004

12211000050005

00000000109999999999

2111100001

0000000000

BTBT 00010001

1131100004BRBR

0000000004OROR

1234567890R1R1

GBE

brbr 03000300 RAMRAM

GARGAR 0300

1131100004GBRGBR

analyseren

Page 59: SOCS

59

CVO

Besturingsorgaan

Dynamische Relocatie HIA R1,A OPT.w R1,B-A BIG R1,B STPA: 10B: RESGR 1

00330000

03020302

03030303

03040304

03050305

00301301

11311000040004

12211000050005

00000000109999999999

2111100001

0000000000

BTBT 00010001

1131100004BRBR

0000000004OROR

1234567890R1R1

GBE

brbr 03000300 RAMRAM

GARGAR 0304READ

1131100004GBRGBR

analyseren

Page 60: SOCS

60

CVO

Besturingsorgaan

Dynamische Relocatie HIA R1,A OPT.w R1,B-A BIG R1,B STPA: 10B: RESGR 1

00330000

03020302

03030303

03040304

03050305

00301301

11311000040004

12211000050005

00000000109999999999

2111100001

0000000000

BTBT 00010001

1131100004BRBR

0000000004OROR

1234567890R1R1

GBE

brbr 03000300 RAMRAM

GARGAR 0304

READ

analyseren

0000000010GBRGBR

Page 61: SOCS

61

CVO

Besturingsorgaan

Dynamische Relocatie HIA R1,A OPT.w R1,B-A BIG R1,B STPA: 10B: RESGR 1

00330000

03020302

03030303

03040304

03050305

00301301

11311000040004

12211000050005

00000000109999999999

2111100001

0000000000

BTBT 00010001

1131100004BRBR

0000000010OROR

1234567890R1R1

GBE

brbr 03000300 RAMRAM

GARGAR 0304

0000000010GBRGBR

analyseren

Page 62: SOCS

62

CVO

Besturingsorgaan

Dynamische Relocatie HIA R1,A OPT.w R1,B-A BIG R1,B STPA: 10B: RESGR 1

00330000

03020302

03030303

03040304

03050305

00301301

11311000040004

12211000050005

00000000109999999999

2111100001

0000000000

BTBT 00010001

1131100004BRBR

0000000010OROR

1234567890R1R1

GBE

brbr 03000300 RAMRAM

GARGAR 0304

0000000010GBRGBR

uitvoeren

Page 63: SOCS

63

CVO

Besturingsorgaan

Dynamische Relocatie HIA R1,A OPT.w R1,B-A BIG R1,B STPA: 10B: RESGR 1

00330000

03020302

03030303

03040304

03050305

00301301

11311000040004

12211000050005

00000000109999999999

2111100001

0000000000

BTBT 00010001

1131100004BRBR

0000000010OROR

0000000010R1R1

GBE

brbr 03000300 RAMRAM

GARGAR 0304

0000000010GBRGBR

uitvoeren

Page 64: SOCS

64

CVO

Besturingsorgaan

Dynamische Relocatie HIA R1,A OPT.w R1,B-A BIG R1,B STPA: 10B: RESGR 1

00330000

03020302

03030303

03040304

03050305

00301301

11311000040004

12211000050005

00000000109999999999

2111100001

0000000000

BTBT 00010001

1131100004BRBR

0000000010OROR

0000000010R1R1

GBE

brbr 03000300 RAMRAM

GARGAR 0304

0000000010GBRGBR

ophalen

Page 65: SOCS

65

CVO

Besturingsorgaan

Dynamische Relocatie HIA R1,A OPT.w R1,B-A BIG R1,B STPA: 10B: RESGR 1

00330000

03020302

03030303

03040304

03050305

00301301

11311000040004

12211000050005

00000000109999999999

2111100001

0000000000

BTBT 00010001

1131100004BRBR

0000000010OROR

0000000010R1R1

GBE

brbr 03000300 RAMRAM

GARGAR 0301READ

0000000010GBRGBR

ophalen

Page 66: SOCS

66

CVO

Besturingsorgaan

Dynamische Relocatie HIA R1,A OPT.w R1,B-A BIG R1,B STPA: 10B: RESGR 1

00330000

03020302

03030303

03040304

03050305

00301301

11311000040004

12211000050005

00000000109999999999

2111100001

0000000000

BTBT 00010001

1131100004BRBR

0000000010OROR

0000000010R1R1

GBE

brbr 03000300 RAMRAM

GARGAR 0301

READ

2111100001GBRGBR

ophalen

Page 67: SOCS

67

CVO

Besturingsorgaan

Dynamische Relocatie HIA R1,A OPT.w R1,B-A BIG R1,B STPA: 10B: RESGR 1

00330000

03020302

03030303

03040304

03050305

00301301

11311000040004

12211000050005

00000000109999999999

2111100001

0000000000

BTBT 00020002

2111100001BRBR

0000000010OROR

0000000010R1R1

GBE

brbr 03000300 RAMRAM

GARGAR 0301

2111100001GBRGBR

ophalen

Page 68: SOCS

68

CVO

Besturingsorgaan

Dynamische Relocatie HIA R1,A OPT.w R1,B-A BIG R1,B STPA: 10B: RESGR 1

00330000

03020302

03030303

03040304

03050305

00301301

11311000040004

12211000050005

00000000109999999999

2111100001

0000000000

BTBT 00020002

2111100001BRBR

0000000001OROR

0000000010R1R1

GBE

brbr 03000300 RAMRAM

GARGAR 0301

2111100001GBRGBR

analyseren

Page 69: SOCS

69

CVO

Besturingsorgaan

Dynamische Relocatie HIA R1,A OPT.w R1,B-A BIG R1,B STPA: 10B: RESGR 1

00330000

03020302

03030303

03040304

03050305

00301301

11311000040004

12211000050005

00000000109999999999

2111100001

0000000000

BTBT 00020002

2111100001BRBR

0000000001OROR

0000000011R1R1

GBE

brbr 03000300 RAMRAM

GARGAR 0301

2111100001GBRGBR

uitvoeren

Page 70: SOCS

70

CVO

Besturingsorgaan

Dynamische Relocatie HIA R1,A OPT.w R1,B-A BIG R1,B STPA: 10B: RESGR 1

00330000

03020302

03030303

03040304

03050305

00301301

11311000040004

12211000050005

00000000109999999999

2111100001

0000000000

BTBT 00020002

2111100001BRBR

0000000001OROR

0000000011R1R1

GBE

brbr 03000300 RAMRAM

GARGAR 0301

2111100001GBRGBR

ophalen

Page 71: SOCS

71

CVO

Besturingsorgaan

Dynamische Relocatie HIA R1,A OPT.w R1,B-A BIG R1,B STPA: 10B: RESGR 1

00330000

03020302

03030303

03040304

03050305

00301301

11311000040004

12211000050005

00000000109999999999

2111100001

0000000000

BTBT 00020002

2111100001BRBR

0000000001OROR

0000000011R1R1

GBE

brbr 03000300 RAMRAM

GARGAR 0302READ

2111100001GBRGBR

ophalen

Page 72: SOCS

72

CVO

Besturingsorgaan

Dynamische Relocatie HIA R1,A OPT.w R1,B-A BIG R1,B STPA: 10B: RESGR 1

00330000

03020302

03030303

03040304

03050305

00301301

11311000040004

12211000050005

00000000109999999999

2111100001

0000000000

BTBT 00020002

2111100001BRBR

0000000001OROR

0000000011R1R1

GBE

brbr 03000300 RAMRAM

GARGAR 0302

READ

1211000005GBRGBR

ophalen

Page 73: SOCS

73

CVO

Besturingsorgaan

Dynamische Relocatie HIA R1,A OPT.w R1,B-A BIG R1,B STPA: 10B: RESGR 1

00330000

03020302

03030303

03040304

03050305

00301301

11311000040004

12211000050005

00000000109999999999

2111100001

0000000000

BTBT 00030003

1221100005BRBR

0000000001OROR

0000000011R1R1

GBE

brbr 03000300 RAMRAM

GARGAR 0302

1221100005GBRGBR

ophalen

Page 74: SOCS

74

CVO

Besturingsorgaan

Dynamische Relocatie HIA R1,A OPT.w R1,B-A BIG R1,B STPA: 10B: RESGR 1

00330000

03020302

03030303

03040304

03050305

00301301

11311000040004

12211000050005

00000000109999999999

2111100001

0000000000

BTBT 00030003

1221100005BRBR

0000000005OROR

0000000011R1R1

GBE

brbr 03000300 RAMRAM

GARGAR 0302

1221100005GBRGBR

analyseren

Page 75: SOCS

75

CVO

Besturingsorgaan

Dynamische Relocatie HIA R1,A OPT.w R1,B-A BIG R1,B STPA: 10B: RESGR 1

00330000

03020302

03030303

03040304

03050305

00301301

11311000040004

12211000050005

00000000109999999999

2111100001

0000000000

BTBT 00030003

1221100005BRBR

0000000005OROR

0000000011R1R1

GBE

brbr 03000300 RAMRAM

GARGAR 0302

1221100005GBRGBR

uitvoeren

Page 76: SOCS

76

CVO

Besturingsorgaan

Dynamische Relocatie HIA R1,A OPT.w R1,B-A BIG R1,B STPA: 10B: RESGR 1

00330000

03020302

03030303

03040304

03050305

00301301

11311000040004

12211000050005

00000000109999999999

2111100001

0000000000

BTBT 00030003

1221100005BRBR

0000000005OROR

0000000011R1R1

GBE

brbr 03000300 RAMRAM

GARGAR 0305WRITE

0000000011GBRGBR

uitvoeren

Page 77: SOCS

77

CVO

Besturingsorgaan

Dynamische Relocatie HIA R1,A OPT.w R1,B-A BIG R1,B STPA: 10B: RESGR 1

00330000

03020302

03030303

03040304

03050305

00301301

11311000040004

12211000050005

00000000109999999999

2111100001

0000000011

BTBT 00030003

1221100005BRBR

0000000005OROR

0000000011R1R1

GBE

brbr 03000300 RAMRAM

GARGAR 0305

0000000011GBRGBR

uitvoeren

Page 78: SOCS

78

CVO

Besturingsorgaan

Dynamische Relocatie HIA R1,A OPT.w R1,B-A BIG R1,B STPA: 10B: RESGR 1

00330000

03020302

03030303

03040304

03050305

00301301

11311000040004

12211000050005

00000000109999999999

2111100001

0000000011

BTBT 00030003

1221100005BRBR

0000000005OROR

0000000011R1R1

GBE

brbr 03000300 RAMRAM

GARGAR 0305

0000000011GBRGBR

ophalen

Page 79: SOCS

79

CVO

Besturingsorgaan

Dynamische Relocatie HIA R1,A OPT.w R1,B-A BIG R1,B STPA: 10B: RESGR 1

00330000

03020302

03030303

03040304

03050305

00301301

11311000040004

12211000050005

00000000109999999999

2111100001

0000000011

BTBT 00030003

1221100005BRBR

0000000005OROR

0000000011R1R1

GBE

brbr 03000300 RAMRAM

GARGAR 0303READ

0000000011GBRGBR

ophalen

Page 80: SOCS

80

CVO

Besturingsorgaan

Dynamische Relocatie HIA R1,A OPT.w R1,B-A BIG R1,B STPA: 10B: RESGR 1

00330000

03020302

03030303

03040304

03050305

00301301

11311000040004

12211000050005

00000000109999999999

2111100001

0000000011

BTBT 00030003

1221100005BRBR

0000000005OROR

0000000011R1R1

GBE

brbr 03000300 RAMRAM

GARGAR 0303

READ

9999999999GBRGBR

ophalen

Page 81: SOCS

81

CVO

Besturingsorgaan

Dynamische Relocatie HIA R1,A OPT.w R1,B-A BIG R1,B STPA: 10B: RESGR 1

00330000

03020302

03030303

03040304

03050305

00301301

11311000040004

12211000050005

00000000109999999999

2111100001

0000000011

BTBT 00040004

9999999999BRBR

0000000005OROR

0000000011R1R1

GBE

brbr 03000300 RAMRAM

GARGAR 0303

9999999999GBRGBR

ophalen

Page 82: SOCS

82

CVO

Besturingsorgaan

Dynamische Relocatie HIA R1,A OPT.w R1,B-A BIG R1,B STPA: 10B: RESGR 1

00330000

03020302

03030303

03040304

03050305

00301301

11311000040004

12211000050005

00000000109999999999

2111100001

0000000011

BTBT 00040004

9999999999BRBR

9999999999OROR

0000000011R1R1

GBE

brbr 03000300 RAMRAM

GARGAR 0303

9999999999GBRGBR

analyseren

Page 83: SOCS

83

CVO

Besturingsorgaan

Dynamische Relocatie HIA R1,A OPT.w R1,B-A BIG R1,B STPA: 10B: RESGR 1

00330000

03020302

03030303

03040304

03050305

00301301

11311000040004

12211000050005

00000000109999999999

2111100001

0000000011

BTBT 00040004

9999999999BRBR

9999999999OROR

0000000011R1R1

GBE

brbr 03000300 RAMRAM

GARGAR 0303

9999999999GBRGBR

uitvoeren

Page 84: SOCS

84

Dynamische Relocatie

Dynamische Relocatie Inhoud Basisregister

= constant Adresvertaling

transparant

Indexatie Inhoud Indexregister

constant Adresberekening

zichtbaar in instructie

Page 85: SOCS

85

Dynamische Relocatie

Statische Relocatie Geladen vanaf 0300

Dynamische Relocatie Geladen vanaf 0300

MAIN: HIA.a R0,MAIN DRU STP EINDPR

00330000

03020302

00301301

11210003000300

99999999997299999999

00330000

03020302

00301301

11210000000000

99999999997299999999

300Uitvoer

0Uitvoer

00000000

00020002

00001001

11210000000000

9999999999

7299999999

Programma Programma lijkt geladen lijkt geladen vanaf 0000vanaf 0000

Page 86: SOCS

86

Dynamische Relocatie

Geheugenbeheer-eenheid en de programmeur Machine-instructies

Invullen van basisregister In- en uitschakelen van GBE

HIHIBB = Haal In Basisregister HIHIBB 12341234 | br 1234

SGISGI = Spring en schakel GBE In SGISGI 12341234 | GBE in; BT 1234

SGUSGU = Spring en schakel GBE Uit SGU 1234SGU 1234 | GBE uit; BT 1234

Page 87: SOCS

87

Dynamische Relocatie

Gevolgen voor vertaler Programma geladen

vanaf 0000 Geen relocatietabel

Gevolgen voor lader ± Absolute Lader Invullen basisregister GBE inschakelen

Andere programma’s (binder)

Page 88: SOCS

88

Dynamische Relocatie

Laadadres is bepaald Algoritme

Lengte inlezen Opeenvolgende getallen

inlezen opeenvolgende geheugenplaatsen (begin bij laadadres)

Start uitvoering

| Lader (± Absolute Lader)| Lengte R2| Adres R1 | Laadadres R3 (bepaald!) LEZ | Lengte HIA R2,R0 HIA R1,R3LUS: VGL.w R2,0 VSP KLG,GBE LEZ | Instr. BIG R0,0(R1+) AFT.w R2,1 SPR LUS| br laadadres, GBE inGBE: HIB 0(R3) SGI 0

Laad basisregister Schakel GBE in

Page 89: SOCS

89

Cursustekst

Hoofdstuk 3: pag. 45 pag. 62