socs
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 PresentationTRANSCRIPT
1
SOCS
Hoofdstuk 3
Basisprogrammatuur
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
3
Lader
LaderLader
RAM
Uitvoerbaar programma(machinetaal)
1131000005
729999999921310000067299999999999999999900000100000000020000
1131000005
729999999921310000067299999999999999999900000100000000020000
4
Lader
RAM
1131000005
729999999921310000067299999999999999999900000100000000020000
1131000005
729999999921310000067299999999999999999900000100000000020000
LaderLader
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
6
Verantwoording
RAM
VertaleVertalerr
HIA R0,ADRUOPT R0,BDRUSTP
A: 10000 B: 20000
1131000005729999999921310000067299999999999999999900000100000000020000
Schijf
7
Verantwoording
RAM
1131000005729999999921310000067299999999999999999900000100000000020000
LaderLader
1131000005729999999921310000067299999999999999999900000100000000020000
8
Lader
Deel van het besturingssysteem Zie ook opstarten van een computer
Verschillende Lader-algoritmes Absolute Lader Relocerende Lader
Extra Apparatuur Dynamische adresvertaling
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
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;
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
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
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
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+)
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
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
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
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
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
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
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
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:
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
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
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)
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
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
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
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
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
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
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
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;
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
35
Relocerende Lader
Nadeel absolute lader: Programmeur moet vóór vertaling
laadadres kennen
Vertaler Lader: “Hoe adressen aanpassen” Relocatietabel
relatief adresrelatief adres bewerkingbewerking
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
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
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#
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):
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):
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):
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):
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):
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):
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#
46
Relocerende Lader
Twee stappen: Stap 1:
Uitvoerbaar programma letterlijk geheugen Stap 2: Relocatie-stap:
Adressen aanpassen
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
84
Dynamische Relocatie
Dynamische Relocatie Inhoud Basisregister
= constant Adresvertaling
transparant
Indexatie Inhoud Indexregister
constant Adresberekening
zichtbaar in instructie
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
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
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)
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
89
Cursustekst
Hoofdstuk 3: pag. 45 pag. 62