480 likes | 667 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 • Niets met macro’s te maken kopiëren • Macro-definitie onthouden en verwijderen • Macro-oproep expanderen Toestanden • Kopieermode • Definitiemode • Expansiemode
Enkel MACRO en MCREINDE • Enkel MACRO- en MCREINDE-directieven • Geen • MEVA, MVSP, MSPR, MFOUT, MNTS • Plus: • Parameters • Lokale symbolische adressen
Kopieermode Invoer = MACRO definitiemode xyz …(xyz gedefinieerde macro) Argumententabel expansiemode iets anders Gewoon kopiëren Definitiemode Eerste lijn = hoofding 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 | 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 | 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 | 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 | 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 | 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 | 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 MEVA N1,<N>-1
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
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