480 likes | 615 Views
SOCS. Hoofdstuk 3 Basisprogrammatuur. Inhoud. De Vertaler De Voorvertaler Enkel MACRO en MCREINDE directieven Extra macro-directieven De Lader De Binder De Vertolker Het Speurprogramma Het Opstarten van de Computer. Voorvertaler. MACRO Som x,y HIA R0,<x> OPT R0,<y> MCREINDE
E N D
SOCS Hoofdstuk 3 Basisprogrammatuur
Inhoud • De Vertaler • De Voorvertaler • Enkel MACRO en MCREINDE directieven • Extra macro-directieven • De Lader • De Binder • De Vertolker • Het Speurprogramma • Het Opstarten van de Computer
Voorvertaler MACRO Som x,y HIA R0,<x> OPT R0,<y> MCREINDE Som a,b DRU STP a: RESGR 1 b: RESGR 1 HIA R0,a OPT R0,b DRU STP a: RESGR 1 b: RESGR 1 Voor-vertaler Bronprogramma(zonder macro-definities en oproepen) Bronprogramma (met macro-definities op -oproepen) Engels: Pre-processor
Aparte voorvertaler Macro-verwerking = Symboolmanipulatie Code-generatie In andere context gebruiken (bijv. tekst) Ingebouwd in vertaler Betere foutenboodschappen Gebonden aan taal Implementatie
Taken laten staan onthouden en verwijderen vervangen Niets met macro’s te maken Macro-definitie Macro-oproep Toestanden • Kopieermode • Definitiemode • Expansiemode
Enkel MACRO en MCREINDE • Enkel MACRO- en MCREINDE-directieven • Geen: • MEVA, MVSP, MSPR, MFOUT, MNTS • Wel: • Parameters • Lokale symbolische adressen
Kopieermode Invoer = MACRO definitiemode xyz …(xyz gedefinieerde macro) Argumententabel expansiemode iets anders Gewoon kopiërenblijf in kopieermode Definitiemode Eerste lijn = hoofdingOnthoud Volgende lijn = MCREINDE Einde definitie kopieermode iets anders Toevoegen aan definitie Taken
Expansiemode Lichaam definitie lezen Elke lijn: Substituties <NAAM> Opzoeken in argumententabel $Etiket Omzetten naar unieke naam_tellerEtiket Geneste macro-oproep? Huidig expansie onderbreken Argumententabel Nieuwe expansie Andere gevallen Gewijzigde lijn naar uitvoerbestand Taken
andere lijn hoofding MACRO MCREINDE andere lijn einde lichaam macro-oproep genesteoproep eindegenesteoproep Toestandsdiagramma Kopieer-mode Definitie-mode Expansie-mode
Toestand: Kopieer Uitvoer-bestand Voorbeeld | Macro SOM som v. elem. v. rij MACRO SOM Res,A,N | <Res> (i=0..<N>-1)<A>[i] HIA.w R0,0 HIA.w R1,0 $lus: OPT R0,<A>(R1+) VGL.w R1,<N> VSP KL,$lus BIG R0,<Res> MCREINDE | Begin van het programma SOM C,X,3 HIA R0,C DRU STP C: RESGR 1 X: 10;20;30
Toestand: Kopieer Uitvoer-bestand Voorbeeld | Macro SOM som v. elem. v. rij MACRO SOM Res,A,N | <Res> (i=0..<N>-1)<A>[i] HIA.w R0,0 HIA.w R1,0 $lus: OPT R0,<A>(R1+) VGL.w R1,<N> VSP KL,$lus BIG R0,<Res> MCREINDE | Begin van het programma SOM C,X,3 HIA R0,C DRU STP C: RESGR 1 X: 10;20;30 | Macro SOM som v. elem. v. rij
Toestand: Kopieer | Macro SOM som v. elem. v. rij Uitvoer-bestand Voorbeeld Definitie | Macro SOM som v. elem. v. rij MACRO SOM Res,A,N | <Res> (i=0..<N>-1)<A>[i] HIA.w R0,0 HIA.w R1,0 $lus: OPT R0,<A>(R1+) VGL.w R1,<N> VSP KL,$lus BIG R0,<Res> MCREINDE | Begin van het programma SOM C,X,3 HIA R0,C DRU STP C: RESGR 1 X: 10;20;30
Toestand: Definitie | Macro SOM som v. elem. v. rij Uitvoer-bestand Voorbeeld | Macro SOM som v. elem. v. rij MACRO SOM Res,A,N | <Res> (i=0..<N>-1)<A>[i] HIA.w R0,0 HIA.w R1,0 $lus: OPT R0,<A>(R1+) VGL.w R1,<N> VSP KL,$lus BIG R0,<Res> MCREINDE | Begin van het programma SOM C,X,3 HIA R0,C DRU STP C: RESGR 1 X: 10;20;30
Toestand: Definitie | Macro SOM som v. elem. v. rij Uitvoer-bestand Voorbeeld | Macro SOM som v. elem. v. rij MACRO SOM Res,A,N | <Res> (i=0..<N>-1)<A>[i] HIA.w R0,0 HIA.w R1,0 $lus: OPT R0,<A>(R1+) VGL.w R1,<N> VSP KL,$lus BIG R0,<Res> MCREINDE | Begin van het programma SOM C,X,3 HIA R0,C DRU STP C: RESGR 1 X: 10;20;30
Toestand: Definitie | Macro SOM som v. elem. v. rij Uitvoer-bestand Voorbeeld | Macro SOM som v. elem. v. rij MACRO SOM Res,A,N | <Res> (i=0..<N>-1)<A>[i] HIA.w R0,0 HIA.w R1,0 $lus: OPT R0,<A>(R1+) VGL.w R1,<N> VSP KL,$lus BIG R0,<Res> MCREINDE | Begin van het programma SOM C,X,3 HIA R0,C DRU STP C: RESGR 1 X: 10;20;30
Toestand: Definitie | Macro SOM som v. elem. v. rij Uitvoer-bestand Voorbeeld | Macro SOM som v. elem. v. rij MACRO SOM Res,A,N | <Res> (i=0..<N>-1)<A>[i] HIA.w R0,0 HIA.w R1,0 $lus: OPT R0,<A>(R1+) VGL.w R1,<N> VSP KL,$lus BIG R0,<Res> MCREINDE | Begin van het programma SOM C,X,3 HIA R0,C DRU STP C: RESGR 1 X: 10;20;30
Toestand: Definitie | Macro SOM som v. elem. v. rij Uitvoer-bestand Voorbeeld | Macro SOM som v. elem. v. rij MACRO SOM Res,A,N | <Res> (i=0..<N>-1)<A>[i] HIA.w R0,0 HIA.w R1,0 $lus: OPT R0,<A>(R1+) VGL.w R1,<N> VSP KL,$lus BIG R0,<Res> MCREINDE | Begin van het programma SOM C,X,3 HIA R0,C DRU STP C: RESGR 1 X: 10;20;30
Toestand: Definitie | Macro SOM som v. elem. v. rij Uitvoer-bestand Voorbeeld | Macro SOM som v. elem. v. rij MACRO SOM Res,A,N | <Res> (i=0..<N>-1)<A>[i] HIA.w R0,0 HIA.w R1,0 $lus: OPT R0,<A>(R1+) VGL.w R1,<N> VSP KL,$lus BIG R0,<Res> MCREINDE | Begin van het programma SOM C,X,3 HIA R0,C DRU STP C: RESGR 1 X: 10;20;30
Toestand: Definitie | Macro SOM som v. elem. v. rij Uitvoer-bestand Voorbeeld | Macro SOM som v. elem. v. rij MACRO SOM Res,A,N | <Res> (i=0..<N>-1)<A>[i] HIA.w R0,0 HIA.w R1,0 $lus: OPT R0,<A>(R1+) VGL.w R1,<N> VSP KL,$lus BIG R0,<Res> MCREINDE | Begin van het programma SOM C,X,3 HIA R0,C DRU STP C: RESGR 1 X: 10;20;30
Toestand: Definitie | Macro SOM som v. elem. v. rij Uitvoer-bestand Voorbeeld | Macro SOM som v. elem. v. rij MACRO SOM Res,A,N | <Res> (i=0..<N>-1)<A>[i] HIA.w R0,0 HIA.w R1,0 $lus: OPT R0,<A>(R1+) VGL.w R1,<N> VSP KL,$lus BIG R0,<Res> MCREINDE | Begin van het programma SOM C,X,3 HIA R0,C DRU STP C: RESGR 1 X: 10;20;30
Toestand: Definitie | Macro SOM som v. elem. v. rij Uitvoer-bestand Voorbeeld Kopieer | Macro SOM som v. elem. v. rij MACRO SOM Res,A,N | <Res> (i=0..<N>-1)<A>[i] HIA.w R0,0 HIA.w R1,0 $lus: OPT R0,<A>(R1+) VGL.w R1,<N> VSP KL,$lus BIG R0,<Res> MCREINDE | Begin van het programma SOM C,X,3 HIA R0,C DRU STP C: RESGR 1 X: 10;20;30
Toestand: Kopieer | Macro SOM som v. elem. v. rij Uitvoer-bestand Voorbeeld Kopieer | Macro SOM som v. elem. v. rij MACRO SOM Res,A,N | <Res> (i=0..<N>-1)<A>[i] HIA.w R0,0 HIA.w R1,0 $lus: OPT R0,<A>(R1+) VGL.w R1,<N> VSP KL,$lus BIG R0,<Res> MCREINDE | Begin van het programma SOM C,X,3 HIA R0,C DRU STP C: RESGR 1 X: 10;20;30 | Begin van het programma
Toestand: Kopieer | Macro SOM som v. elem. v. rij Res C A X N 3 Argumententabel Uitvoer-bestand Voorbeeld Expansie | Macro SOM som v. elem. v. rij MACRO SOM Res,A,N | <Res> (i=0..<N>-1)<A>[i] HIA.w R0,0 HIA.w R1,0 $lus: OPT R0,<A>(R1+) VGL.w R1,<N> VSP KL,$lus BIG R0,<Res> MCREINDE | Begin van het programma SOM C,X,3 HIA R0,C DRU STP C: RESGR 1 X: 10;20;30 | Begin van het programma
Toestand: Expansie | Macro SOM som v. elem. v. rij | Begin van het programma Res C A X N 3 Argumententabel Uitvoer-bestand Voorbeeld | Macro SOM som v. elem. v. rij MACRO SOM Res,A,N | <Res> (i=0..<N>-1)<A>[i] HIA.w R0,0 HIA.w R1,0 $lus: OPT R0,<A>(R1+) VGL.w R1,<N> VSP KL,$lus BIG R0,<Res> MCREINDE | Begin van het programma SOM C,X,3 HIA R0,C DRU STP C: RESGR 1 X: 10;20;30 | C som(i=0..3-1)X[i]
Toestand: Expansie | Macro SOM som v. elem. v. rij | Begin van het programma | C som(i=0..3-1)X[i] Res C A X N 3 Argumententabel Uitvoer-bestand Voorbeeld | Macro SOM som v. elem. v. rij MACRO SOM Res,A,N | <Res> (i=0..<N>-1)<A>[i] HIA.w R0,0 HIA.w R1,0 $lus: OPT R0,<A>(R1+) VGL.w R1,<N> VSP KL,$lus BIG R0,<Res> MCREINDE | Begin van het programma SOM C,X,3 HIA R0,C DRU STP C: RESGR 1 X: 10;20;30 HIA.w R0,0
Toestand: Expansie | Macro SOM som v. elem. v. rij | Begin van het programma | C som(i=0..3-1)X[i] HIA.w R0,0 Res C A X N 3 Argumententabel Uitvoer-bestand Voorbeeld | Macro SOM som v. elem. v. rij MACRO SOM Res,A,N | <Res> (i=0..<N>-1)<A>[i] HIA.w R0,0 HIA.w R1,0 $lus: OPT R0,<A>(R1+) VGL.w R1,<N> VSP KL,$lus BIG R0,<Res> MCREINDE | Begin van het programma SOM C,X,3 HIA R0,C DRU STP C: RESGR 1 X: 10;20;30 HIA.w R1,0
Toestand: Expansie | Macro SOM som v. elem. v. rij | Begin van het programma | C som(i=0..3-1)X[i] HIA.w R0,0 HIA.w R1,0 Res C A X N 3 Argumententabel Uitvoer-bestand Voorbeeld | Macro SOM som v. elem. v. rij MACRO SOM Res,A,N | <Res> (i=0..<N>-1)<A>[i] HIA.w R0,0 HIA.w R1,0 $lus: OPT R0,<A>(R1+) VGL.w R1,<N> VSP KL,$lus BIG R0,<Res> MCREINDE | Begin van het programma SOM C,X,3 HIA R0,C DRU STP C: RESGR 1 X: 10;20;30 _1lus: OPT R0,X(R1+)
Toestand: Expansie | Macro SOM som v. elem. v. rij | Begin van het programma | C som(i=0..3-1)X[i] HIA.w R0,0 HIA.w R1,0 _1lus: OPT R0,X(R1+) Res C A X N 3 Argumententabel Uitvoer-bestand Voorbeeld | Macro SOM som v. elem. v. rij MACRO SOM Res,A,N | <Res> (i=0..<N>-1)<A>[i] HIA.w R0,0 HIA.w R1,0 $lus: OPT R0,<A>(R1+) VGL.w R1,<N> VSP KL,$lus BIG R0,<Res> MCREINDE | Begin van het programma SOM C,X,3 HIA R0,C DRU STP C: RESGR 1 X: 10;20;30 VGL.w R1,3
Toestand: Expansie | Macro SOM som v. elem. v. rij | Begin van het programma | C som(i=0..3-1)X[i] HIA.w R0,0 HIA.w R1,0 _1lus: OPT R0,X(R1+) VGL.w R1,3 Res C A X N 3 Argumententabel Uitvoer-bestand Voorbeeld | Macro SOM som v. elem. v. rij MACRO SOM Res,A,N | <Res> (i=0..<N>-1)<A>[i] HIA.w R0,0 HIA.w R1,0 $lus: OPT R0,<A>(R1+) VGL.w R1,<N> VSP KL,$lus BIG R0,<Res> MCREINDE | Begin van het programma SOM C,X,3 HIA R0,C DRU STP C: RESGR 1 X: 10;20;30 VSP KL,_1lus
Toestand: Expansie | Macro SOM som v. elem. v. rij | Begin van het programma | C som(i=0..3-1)X[i] HIA.w R0,0 HIA.w R1,0 _1lus: OPT R0,X(R1+) VGL.w R1,3 VSP KL,_1lus Res C A X N 3 Argumententabel Uitvoer-bestand Voorbeeld Kopieer | Macro SOM som v. elem. v. rij MACRO SOM Res,A,N | <Res> (i=0..<N>-1)<A>[i] HIA.w R0,0 HIA.w R1,0 $lus: OPT R0,<A>(R1+) VGL.w R1,<N> VSP KL,$lus BIG R0,<Res> MCREINDE | Begin van het programma SOM C,X,3 HIA R0,C DRU STP C: RESGR 1 X: 10;20;30 BIG R0,C
Toestand: Kopieer | Macro SOM som v. elem. v. rij | Begin van het programma | C som(i=0..3-1)X[i] HIA.w R0,0 HIA.w R1,0 _1lus: OPT R0,X(R1+) VGL.w R1,3 VSP KL,_1lus BIG R0,C Uitvoer-bestand Voorbeeld Kopieer | Macro SOM som v. elem. v. rij MACRO SOM Res,A,N | <Res> (i=0..<N>-1)<A>[i] HIA.w R0,0 HIA.w R1,0 $lus: OPT R0,<A>(R1+) VGL.w R1,<N> VSP KL,$lus BIG R0,<Res> MCREINDE | Begin van het programma SOM C,X,3 HIA R0,C DRU STP C: RESGR 1 X: 10;20;30 HIA R0,C
Toestand: Kopieer | Macro SOM som v. elem. v. rij | Begin van het programma | C som(i=0..3-1)X[i] HIA.w R0,0 HIA.w R1,0 _1lus: OPT R0,X(R1+) VGL.w R1,3 VSP KL,_1lus BIG R0,C HIA R0,C Uitvoer-bestand Voorbeeld Kopieer | Macro SOM som v. elem. v. rij MACRO SOM Res,A,N | <Res> (i=0..<N>-1)<A>[i] HIA.w R0,0 HIA.w R1,0 $lus: OPT R0,<A>(R1+) VGL.w R1,<N> VSP KL,$lus BIG R0,<Res> MCREINDE | Begin van het programma SOM C,X,3 HIA R0,C DRU STP C: RESGR 1 X: 10;20;30 DRU
Toestand: Kopieer | Macro SOM som v. elem. v. rij | Begin van het programma | C som(i=0..3-1)X[i] HIA.w R0,0 HIA.w R1,0 _1lus: OPT R0,X(R1+) VGL.w R1,3 VSP KL,_1lus BIG R0,C HIA R0,C DRU Uitvoer-bestand Voorbeeld Kopieer | Macro SOM som v. elem. v. rij MACRO SOM Res,A,N | <Res> (i=0..<N>-1)<A>[i] HIA.w R0,0 HIA.w R1,0 $lus: OPT R0,<A>(R1+) VGL.w R1,<N> VSP KL,$lus BIG R0,<Res> MCREINDE | Begin van het programma SOM C,X,3 HIA R0,C DRU STP C: RESGR 1 X: 10;20;30 STP
Toestand: Kopieer | Macro SOM som v. elem. v. rij | Begin van het programma | C som(i=0..3-1)X[i] HIA.w R0,0 HIA.w R1,0 _1lus: OPT R0,X(R1+) VGL.w R1,3 VSP KL,_1lus BIG R0,C HIA R0,C DRU STP Uitvoer-bestand Voorbeeld Kopieer | Macro SOM som v. elem. v. rij MACRO SOM Res,A,N | <Res> (i=0..<N>-1)<A>[i] HIA.w R0,0 HIA.w R1,0 $lus: OPT R0,<A>(R1+) VGL.w R1,<N> VSP KL,$lus BIG R0,<Res> MCREINDE | Begin van het programma SOM C,X,3 HIA R0,C DRU STP C: RESGR 1 X: 10;20;30 C: RESGR 1
Toestand: Kopieer | Macro SOM som v. elem. v. rij | Begin van het programma | C som(i=0..3-1)X[i] HIA.w R0,0 HIA.w R1,0 _1lus: OPT R0,X(R1+) VGL.w R1,3 VSP KL,_1lus BIG R0,C HIA R0,C DRU STP C: RESGR 1 Uitvoer-bestand Voorbeeld Kopieer | Macro SOM som v. elem. v. rij MACRO SOM Res,A,N | <Res> (i=0..<N>-1)<A>[i] HIA.w R0,0 HIA.w R1,0 $lus: OPT R0,<A>(R1+) VGL.w R1,<N> VSP KL,$lus BIG R0,<Res> MCREINDE | Begin van het programma SOM C,X,3 HIA R0,C DRU STP C: RESGR 1 X: 10;20;30 X: 10;20;30
Extra Macro-directieven • MEVA, MVGL, MVSP, MSPR, MFOUT, MNTS • Lokale macro-variabelen • Globale voorvertaler-variabelen • Globale voorvertaler-etiketten
Globale variabelentabel = GVT Macro-variabelen In Argumententabel = ALVT Globale etikettentabel = GET Lokale etikettentabel (LET) In macro-definitie- structuur Gegevensstructuren
Globale variabelentabel = GVT Macro-variabelen In Argumententabel = ALVT Gegevensstructuren MEVA N,10 MEVA Debug,1
Globale variabelentabel = GVT Macro-variabelen In Argumententabel = ALVT Gegevensstructuren MACRO SOM Res,A,N MEVA N1,<N>-1 … MCREINDE
Globale etikettentabel = GET Lokale etikettentabel (LET) In macro-definitie- structuur Gegevensstructuren … $WHILE: MVGL <N>,0 … $EINDE: MNTS … $IF: MVGL <DEBUG>,10
Globale etikettentabel = GET Lokale etikettentabel (LET) In macro-definitie- structuur Gegevensstructuren
Afkorting Inhoud Aantal Gegevensstructuren GVT Globale voorvertaler variabelen 1 ALVT Macro-argumenten en lokale variabelen 1 / oproep GET Globale etiketten 1 LET Lokale etiketten van de macro 1 / definitie MCC Macro-conditie-code ( GVT) 1 teller Telt macro-oproepen ( GVT) 1
Definitiemode LET opstellen Kopieermode $etiket: … Aan GET toevoegen <NAAM> Opzoeken in GVT MEVA GVT MNTS MFOUT MSPR GET MVGL MVSP GET Expansiemode <NAAM> Opzoeken in ALVT, ev. In GVT MEVA ALVT of GVT MNTS MFOUT MSPR LET MVGL MVSP LET Aanpassingen voorvertaler Indien niet gekend: lijnen overslaan tot etiket gevonden
Van bronprogramma tot Uitvoerbaar programma Module A(met macro’s) Module B(met macro’s) Legende: Broncode Voorvertaler Machinecode Voorvertaler Module A(zonder macro’s) Module B(zonder macro’s) RAM Vertaler Vertaler UitvoerbaarProgramma Objectmodule A Objectmodule B Binder Programma-bibliotheek UitvoerbaarProgramma Lader
Macro’s in tekst-context MACRO VERSE ANIMALS,SOUND Old Mac Donald had a farm, E-I-E-I-O And on his farm he had some <ANIMALS>, E-I-E-I-O With a <SOUND><SOUND> here and a <SOUND> \ <SOUND> there, here a <SOUND>, there a <SOUND>, everywhere a \ <SOUND> <SOUND> Old Mac Donald had a farm, E-I-E-I-O MCREINDE VERSE chicks,cheep VERSE ducks,quack VERSE turkeys,gobble
Macro’s in tekst-context Old Mac Donald had a farm, E-I-E-I-O And on his farm he had some chicks E-I-E-I-O With a cheep cheep here and a cheep cheep there, here a cheep, there a cheep, everywhere a cheep \ cheep Old Mac Donald had a farm, E-I-E-I-O Old Mac Donald had a farm, E-I-E-I-O And on his farm he had some ducks E-I-E-I-O With a quack quack here and a quackquack there, here a quack, there a quack, everywhere a quack \ quack Old Mac Donald had a farm, E-I-E-I-O …
Macro’s in tekst-context MACRO VERSE ANIMALS,SOUND Old Mac Donald had a farm, E-I-E-I-O And on his farm he had some <ANIMALS>, E-I-E-I-O With a <SOUND><SOUND> here and a <SOUND> \ <SOUND> there, here a <SOUND>, there a <SOUND>, everywhere a \ <SOUND> <SOUND> Old Mac Donald had a farm, E-I-E-I-O MCREINDE VERSE chicks,cheep VERSE ducks,quack VERSE turkeys,gobble Indien ingebouwd in vertaler: *** fout *** Old: \ onbestaande functiecode
Cursustekst • Hoofdstuk 3: pag. 23 pag. 44 • Hoofdstuk 3 volledig gezien: pag. 1 pag. 93