SOCS
description
Transcript of SOCS
1
SOCS
Hoofdstuk 3
Basisprogrammatuur
2
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
3
Voorvertaler
MACROSom x,yHIA R0,<x>OPT R0,<y>
MCREINDE Som a,b
DRUSTP
a:RESGR 1b:RESGR 1
Voor-Voor-vertalevertale
rr
HIA R0,aOPT R0,bDRUSTP
a: RESGR 1b: RESGR 1
Bronprogramma(met macro-definities op -oproepen)
Bronprogramma(zonder macro-definities en oproepen)
Engels: Pre-processor
4
Implementatie
Aparte voorvertaler Macro-verwerking
= Symboolmanipulatie
Code-generatie In andere context
gebruiken (bijv. tekst)
Ingebouwd in vertaler Betere
foutenboodschappen
Gebonden aan taal
5
Taken
Niets met macro’s te maken
Macro-definitie
Macro-oproep
Toestanden
Kopieermode Definitiemode Expansiemode
laten staan
onthouden en verwijderen
vervangen
6
Enkel MACRO en MCREINDE
Enkel MACRO- en MCREINDE-directieven
Geen: MEVA, MVSP, MSPR, MFOUT, MNTS
Wel: Parameters Lokale symbolische adressen
7
Taken
Kopieermode Invoer =
MACRO
definitiemodedefinitiemode xyz …
(xyz gedefinieerde macro)
ArgumententabelArgumententabel expansiemode expansiemode
iets anders
Gewoon kopiërenGewoon kopiëren blijf in kopieermodeblijf in kopieermode
Definitiemode Eerste lijn = hoofding
OnthoudOnthoud
Volgende lijn = MCREINDE
Einde definitieEinde definitie kopieermode kopieermode
iets anders
Toevoegen aan Toevoegen aan definitie definitie
8
Taken
Expansiemode Lichaam definitie
lezen Elke lijn:
Substituties• <NAAM>
Opzoeken in Opzoeken in argumententabel argumententabel
• $Etiket
Omzetten naarOmzetten naar unieke naam unieke naam __tellertellerEtiketEtiket
Geneste macro-oproep?
Huidig expansieHuidig expansie onderbreken onderbreken
ArgumententabelArgumententabel
Nieuwe expansieNieuwe expansie Andere gevallen
Gewijzigde lijnGewijzigde lijn naar uitvoerbestand naar uitvoerbestand
9
Toestandsdiagramma
Kopieer-mode
Definitie-mode
Expansie-mode
hoofding
andere lijn
MACRO
MCREINDE
andere lijn
macro-oproep
einde lichaam
genesteoproep
eindegenesteoproep
10
Voorbeeld
| Macro SOM som v. elem. v. rijMACRO
SOM Res,A,N| <Res> (i=0..<N>-1)<A>[i]HIA.w R0,0HIA.w R1,0
$lus: OPT R0,<A>(R1+)VGL.w R1,<N>VSP KL,$lusBIG R0,<Res>
MCREINDE| Begin van het programma
SOM C,X,3HIA R0,CDRUSTP
C: RESGR 1X: 10;20;30
KopieerToestand:
Uitvoer-bestand
11
Voorbeeld
| Macro SOM som v. elem. v. rijMACRO
SOM Res,A,N| <Res> (i=0..<N>-1)<A>[i]HIA.w R0,0HIA.w R1,0
$lus: OPT R0,<A>(R1+)VGL.w R1,<N>VSP KL,$lusBIG R0,<Res>
MCREINDE| Begin van het programma
SOM C,X,3HIA R0,CDRUSTP
C: RESGR 1X: 10;20;30
KopieerToestand:
Uitvoer-bestand
| Macro SOM som v. elem. v. rij
12
Voorbeeld
| Macro SOM som v. elem. v. rijMACRO
SOM Res,A,N| <Res> (i=0..<N>-1)<A>[i]HIA.w R0,0HIA.w R1,0
$lus: OPT R0,<A>(R1+)VGL.w R1,<N>VSP KL,$lusBIG R0,<Res>
MCREINDE| Begin van het programma
SOM C,X,3HIA R0,CDRUSTP
C: RESGR 1X: 10;20;30
KopieerToestand:
| Macro SOM som v. elem. v. rij
Uitvoer-bestand
Lengte=?
Definitie
13
Voorbeeld
| Macro SOM som v. elem. v. rijMACRO
SOM Res,A,N| <Res> (i=0..<N>-1)<A>[i]HIA.w R0,0HIA.w R1,0
$lus: OPT R0,<A>(R1+)VGL.w R1,<N>VSP KL,$lusBIG R0,<Res>
MCREINDE| Begin van het programma
SOM C,X,3HIA R0,CDRUSTP
C: RESGR 1X: 10;20;30
DefinitieToestand:
| Macro SOM som v. elem. v. rij
Uitvoer-bestand
Lengte=?
SOM Res Lengte=?
A
N
14
Voorbeeld
| Macro SOM som v. elem. v. rijMACRO
SOM Res,A,N| <Res> (i=0..<N>-1)<A>[i]HIA.w R0,0HIA.w R1,0
$lus: OPT R0,<A>(R1+)VGL.w R1,<N>VSP KL,$lusBIG R0,<Res>
MCREINDE| Begin van het programma
SOM C,X,3HIA R0,CDRUSTP
C: RESGR 1X: 10;20;30
DefinitieToestand:
| Macro SOM som v. elem. v. rij
Uitvoer-bestand
SOM Res Lengte=?
A
N
SOM Res Lengte=?
A
N
| <Res> … <A>[i]
15
Voorbeeld
| Macro SOM som v. elem. v. rijMACRO
SOM Res,A,N| <Res> (i=0..<N>-1)<A>[i]HIA.w R0,0HIA.w R1,0
$lus: OPT R0,<A>(R1+)VGL.w R1,<N>VSP KL,$lusBIG R0,<Res>
MCREINDE| Begin van het programma
SOM C,X,3HIA R0,CDRUSTP
C: RESGR 1X: 10;20;30
DefinitieToestand:
| Macro SOM som v. elem. v. rij
Uitvoer-bestand
SOM Res Lengte=?
A
N
| <Res> … <A>[i]
SOM Res Lengte=?
A
N
| <Res> … <A>[i]HIA.w R0,0
16
Voorbeeld
| Macro SOM som v. elem. v. rijMACRO
SOM Res,A,N| <Res> (i=0..<N>-1)<A>[i]HIA.w R0,0HIA.w R1,0
$lus: OPT R0,<A>(R1+)VGL.w R1,<N>VSP KL,$lusBIG R0,<Res>
MCREINDE| Begin van het programma
SOM C,X,3HIA R0,CDRUSTP
C: RESGR 1X: 10;20;30
DefinitieToestand:
| Macro SOM som v. elem. v. rij
Uitvoer-bestand
SOM Res Lengte=?
A
N
| <Res> … <A>[i]HIA.w R0,0
SOM Res Lengte=?
A
N
| <Res> … <A>[i]HIA.w R0,0HIA.w R1,0
17
Voorbeeld
| Macro SOM som v. elem. v. rijMACRO
SOM Res,A,N| <Res> (i=0..<N>-1)<A>[i]HIA.w R0,0HIA.w R1,0
$lus: OPT R0,<A>(R1+)VGL.w R1,<N>VSP KL,$lusBIG R0,<Res>
MCREINDE| Begin van het programma
SOM C,X,3HIA R0,CDRUSTP
C: RESGR 1X: 10;20;30
DefinitieToestand:
| Macro SOM som v. elem. v. rij
Uitvoer-bestand
SOM Res Lengte=?
A
N
| <Res> … <A>[i]HIA.w R0,0HIA.w R1,0
SOM Res Lengte=?
A
N
| <Res> … <A>[i]HIA.w R0,0HIA.w R1,0
$lus: OPT R0,<A>(R1+)
18
Voorbeeld
| Macro SOM som v. elem. v. rijMACRO
SOM Res,A,N| <Res> (i=0..<N>-1)<A>[i]HIA.w R0,0HIA.w R1,0
$lus: OPT R0,<A>(R1+)VGL.w R1,<N>VSP KL,$lusBIG R0,<Res>
MCREINDE| Begin van het programma
SOM C,X,3HIA R0,CDRUSTP
C: RESGR 1X: 10;20;30
DefinitieToestand:
| Macro SOM som v. elem. v. rij
Uitvoer-bestand
SOM Res Lengte=?
A
N
| <Res> … <A>[i]HIA.w R0,0HIA.w R1,0
$lus: OPT R0,<A>(R1+)
SOM Res Lengte=?
A
N
| <Res> … <A>[i]HIA.w R0,0HIA.w R1,0
$lus: OPT R0,<A>(R1+)
VGL.w R1,<N>
19
Voorbeeld
| Macro SOM som v. elem. v. rijMACRO
SOM Res,A,N| <Res> (i=0..<N>-1)<A>[i]HIA.w R0,0HIA.w R1,0
$lus: OPT R0,<A>(R1+)VGL.w R1,<N>VSP KL,$lusBIG R0,<Res>
MCREINDE| Begin van het programma
SOM C,X,3HIA R0,CDRUSTP
C: RESGR 1X: 10;20;30
DefinitieToestand:
| Macro SOM som v. elem. v. rij
Uitvoer-bestand
SOM Res Lengte=?
A
N
| <Res> … <A>[i]HIA.w R0,0HIA.w R1,0
$lus: OPT R0,<A>(R1+)
VGL.w R1,<N>
SOM Res Lengte=?
A
N
| <Res> … <A>[i]HIA.w R0,0HIA.w R1,0
$lus: OPT R0,<A>(R1+)
VGL.w R1,<N>VSP KL,$lus
20
Voorbeeld
| Macro SOM som v. elem. v. rijMACRO
SOM Res,A,N| <Res> (i=0..<N>-1)<A>[i]HIA.w R0,0HIA.w R1,0
$lus: OPT R0,<A>(R1+)VGL.w R1,<N>VSP KL,$lusBIG R0,<Res>
MCREINDE| Begin van het programma
SOM C,X,3HIA R0,CDRUSTP
C: RESGR 1X: 10;20;30
DefinitieToestand:
| Macro SOM som v. elem. v. rij
Uitvoer-bestand
SOM Res Lengte=?
A
N
| <Res> … <A>[i]HIA.w R0,0HIA.w R1,0
$lus: OPT R0,<A>(R1+)
VGL.w R1,<N>VSP KL,$lus
SOM Res Lengte=?
A
N
| <Res> … <A>[i]HIA.w R0,0HIA.w R1,0
$lus: OPT R0,<A>(R1+)
VGL.w R1,<N>VSP KL,$lusBIG R0,<Res>
21
Voorbeeld
| Macro SOM som v. elem. v. rijMACRO
SOM Res,A,N| <Res> (i=0..<N>-1)<A>[i]HIA.w R0,0HIA.w R1,0
$lus: OPT R0,<A>(R1+)VGL.w R1,<N>VSP KL,$lusBIG R0,<Res>
MCREINDE| Begin van het programma
SOM C,X,3HIA R0,CDRUSTP
C: RESGR 1X: 10;20;30
DefinitieToestand:
| Macro SOM som v. elem. v. rij
Uitvoer-bestand
SOM Res Lengte=7
A
N
| <Res> … <A>[i]HIA.w R0,0HIA.w R1,0
$lus: OPT R0,<A>(R1+)
VGL.w R1,<N>VSP KL,$lusBIG R0,<Res>
Kopieer
22
Voorbeeld
| Macro SOM som v. elem. v. rijMACRO
SOM Res,A,N| <Res> (i=0..<N>-1)<A>[i]HIA.w R0,0HIA.w R1,0
$lus: OPT R0,<A>(R1+)VGL.w R1,<N>VSP KL,$lusBIG R0,<Res>
MCREINDE| Begin van het programma
SOM C,X,3HIA R0,CDRUSTP
C: RESGR 1X: 10;20;30
KopieerToestand:
| Begin van het programma
Kopieer
SOM Res Lengte=7
A
N
| <Res> … <A>[i]HIA.w R0,0HIA.w R1,0
$lus: OPT R0,<A>(R1+)
VGL.w R1,<N>VSP KL,$lusBIG R0,<Res>
| Macro SOM som v. elem. v. rij
Uitvoer-bestand
23
Voorbeeld
| Macro SOM som v. elem. v. rijMACRO
SOM Res,A,N| <Res> (i=0..<N>-1)<A>[i]HIA.w R0,0HIA.w R1,0
$lus: OPT R0,<A>(R1+)VGL.w R1,<N>VSP KL,$lusBIG R0,<Res>
MCREINDE| Begin van het programma
SOM C,X,3HIA R0,CDRUSTP
C: RESGR 1X: 10;20;30
KopieerToestand:
| Macro SOM som v. elem. v. rij
Uitvoer-bestand
| Begin van het programma
SOM Res Lengte=7
A
N
| <Res> … <A>[i]HIA.w R0,0HIA.w R1,0
$lus: OPT R0,<A>(R1+)
VGL.w R1,<N>VSP KL,$lusBIG R0,<Res>
3N
XA
CRes
Argumententabel
Expansie
24
Voorbeeld
| Macro SOM som v. elem. v. rijMACRO
SOM Res,A,N| <Res> (i=0..<N>-1)<A>[i]HIA.w R0,0HIA.w R1,0
$lus: OPT R0,<A>(R1+)VGL.w R1,<N>VSP KL,$lusBIG R0,<Res>
MCREINDE| Begin van het programma
SOM C,X,3HIA R0,CDRUSTP
C: RESGR 1X: 10;20;30
ExpansieToestand:
| Macro SOM som v. elem. v. rij| Begin van het programma
Uitvoer-bestand
| C som(i=0..3-1)X[i]
SOM Res Lengte=7
A
N
| <Res> … <A>[i]HIA.w R0,0HIA.w R1,0
$lus: OPT R0,<A>(R1+)
VGL.w R1,<N>VSP KL,$lusBIG R0,<Res>
3N
XA
CRes
Argumententabel
25
Voorbeeld
| Macro SOM som v. elem. v. rijMACRO
SOM Res,A,N| <Res> (i=0..<N>-1)<A>[i]HIA.w R0,0HIA.w R1,0
$lus: OPT R0,<A>(R1+)VGL.w R1,<N>VSP KL,$lusBIG R0,<Res>
MCREINDE| Begin van het programma
SOM C,X,3HIA R0,CDRUSTP
C: RESGR 1X: 10;20;30
ExpansieToestand:
| Macro SOM som v. elem. v. rij| Begin van het programma| C som(i=0..3-1)X[i]
Uitvoer-bestand
HIA.w R0,0
SOM Res Lengte=7
A
N
| <Res> … <A>[i]HIA.w R0,0HIA.w R1,0
$lus: OPT R0,<A>(R1+)
VGL.w R1,<N>VSP KL,$lusBIG R0,<Res>
3N
XA
CRes
Argumententabel
26
Voorbeeld
| Macro SOM som v. elem. v. rijMACRO
SOM Res,A,N| <Res> (i=0..<N>-1)<A>[i]HIA.w R0,0HIA.w R1,0
$lus: OPT R0,<A>(R1+)VGL.w R1,<N>VSP KL,$lusBIG R0,<Res>
MCREINDE| Begin van het programma
SOM C,X,3HIA R0,CDRUSTP
C: RESGR 1X: 10;20;30
| Macro SOM som v. elem. v. rij| Begin van het programma| C som(i=0..3-1)X[i]
HIA.w R0,0
Uitvoer-bestand
HIA.w R1,0
SOM Res Lengte=7
A
N
| <Res> … <A>[i]HIA.w R0,0HIA.w R1,0
$lus: OPT R0,<A>(R1+)
VGL.w R1,<N>VSP KL,$lusBIG R0,<Res>
3N
XA
CRes
Argumententabel
ExpansieToestand:
27
Voorbeeld
| Macro SOM som v. elem. v. rijMACRO
SOM Res,A,N| <Res> (i=0..<N>-1)<A>[i]HIA.w R0,0HIA.w R1,0
$lus: OPT R0,<A>(R1+)VGL.w R1,<N>VSP KL,$lusBIG R0,<Res>
MCREINDE| Begin van het programma
SOM C,X,3HIA R0,CDRUSTP
C: RESGR 1X: 10;20;30
| Macro SOM som v. elem. v. rij| Begin van het programma| C som(i=0..3-1)X[i]
HIA.w R0,0HIA.w R1,0
Uitvoer-bestand
_1lus: OPT R0,X(R1+)
SOM Res Lengte=7
A
N
| <Res> … <A>[i]HIA.w R0,0HIA.w R1,0
$lus: OPT R0,<A>(R1+)
VGL.w R1,<N>VSP KL,$lusBIG R0,<Res>
3N
XA
CRes
Argumententabel
ExpansieToestand:
28
Voorbeeld
| Macro SOM som v. elem. v. rijMACRO
SOM Res,A,N| <Res> (i=0..<N>-1)<A>[i]HIA.w R0,0HIA.w R1,0
$lus: OPT R0,<A>(R1+)VGL.w R1,<N>VSP KL,$lusBIG R0,<Res>
MCREINDE| Begin van het programma
SOM C,X,3HIA R0,CDRUSTP
C: RESGR 1X: 10;20;30
| Macro SOM som v. elem. v. rij| Begin van het programma| C som(i=0..3-1)X[i]
HIA.w R0,0HIA.w R1,0
_1lus: OPT R0,X(R1+)
Uitvoer-bestand
VGL.w R1,3
SOM Res Lengte=7
A
N
| <Res> … <A>[i]HIA.w R0,0HIA.w R1,0
$lus: OPT R0,<A>(R1+)
VGL.w R1,<N>VSP KL,$lusBIG R0,<Res>
3N
XA
CRes
Argumententabel
ExpansieToestand:
29
Voorbeeld
| Macro SOM som v. elem. v. rijMACRO
SOM Res,A,N| <Res> (i=0..<N>-1)<A>[i]HIA.w R0,0HIA.w R1,0
$lus: OPT R0,<A>(R1+)VGL.w R1,<N>VSP KL,$lusBIG R0,<Res>
MCREINDE| Begin van het programma
SOM C,X,3HIA R0,CDRUSTP
C: RESGR 1X: 10;20;30
| Macro SOM som v. elem. v. rij| Begin van het programma| C som(i=0..3-1)X[i]
HIA.w R0,0HIA.w R1,0
_1lus: OPT R0,X(R1+)VGL.w R1,3
Uitvoer-bestand
VSP KL,_1lus
SOM Res Lengte=7
A
N
| <Res> … <A>[i]HIA.w R0,0HIA.w R1,0
$lus: OPT R0,<A>(R1+)
VGL.w R1,<N>VSP KL,$lusBIG R0,<Res>
3N
XA
CRes
Argumententabel
ExpansieToestand:
30
Voorbeeld
| Macro SOM som v. elem. v. rijMACRO
SOM Res,A,N| <Res> (i=0..<N>-1)<A>[i]HIA.w R0,0HIA.w R1,0
$lus: OPT R0,<A>(R1+)VGL.w R1,<N>VSP KL,$lusBIG R0,<Res>
MCREINDE| Begin van het programma
SOM C,X,3HIA R0,CDRUSTP
C: RESGR 1X: 10;20;30
| Macro SOM som v. elem. v. rij| Begin van het programma| C som(i=0..3-1)X[i]
HIA.w R0,0HIA.w R1,0
_1lus: OPT R0,X(R1+)VGL.w R1,3VSP KL,_1lus
Uitvoer-bestand
BIG R0,C
SOM Res Lengte=7
A
N
| <Res> … <A>[i]HIA.w R0,0HIA.w R1,0
$lus: OPT R0,<A>(R1+)
VGL.w R1,<N>VSP KL,$lusBIG R0,<Res>
3N
XA
CRes
Argumententabel
ExpansieToestand: Kopieer
31
SOM Res Lengte=7
A
N
| <Res> … <A>[i]HIA.w R0,0HIA.w R1,0
$lus: OPT R0,<A>(R1+)
VGL.w R1,<N>VSP KL,$lusBIG R0,<Res>
Voorbeeld
| Macro SOM som v. elem. v. rijMACRO
SOM Res,A,N| <Res> (i=0..<N>-1)<A>[i]HIA.w R0,0HIA.w R1,0
$lus: OPT R0,<A>(R1+)VGL.w R1,<N>VSP KL,$lusBIG R0,<Res>
MCREINDE| Begin van het programma
SOM C,X,3HIA R0,CDRUSTP
C: RESGR 1X: 10;20;30
KopieerToestand:
| Macro SOM som v. elem. v. rij| Begin van het programma| C som(i=0..3-1)X[i]
HIA.w R0,0HIA.w R1,0
_1lus: OPT R0,X(R1+)VGL.w R1,3VSP KL,_1lusBIG R0,C
Uitvoer-bestand
HIA R0,C
Kopieer
32
SOM Res Lengte=7
A
N
| <Res> … <A>[i]HIA.w R0,0HIA.w R1,0
$lus: OPT R0,<A>(R1+)
VGL.w R1,<N>VSP KL,$lusBIG R0,<Res>
Voorbeeld
| Macro SOM som v. elem. v. rijMACRO
SOM Res,A,N| <Res> (i=0..<N>-1)<A>[i]HIA.w R0,0HIA.w R1,0
$lus: OPT R0,<A>(R1+)VGL.w R1,<N>VSP KL,$lusBIG R0,<Res>
MCREINDE| Begin van het programma
SOM C,X,3HIA R0,CDRUSTP
C: RESGR 1X: 10;20;30
KopieerToestand:
| Macro SOM som v. elem. v. rij| Begin van het programma| C som(i=0..3-1)X[i]
HIA.w R0,0HIA.w R1,0
_1lus: OPT R0,X(R1+)VGL.w R1,3VSP KL,_1lusBIG R0,CHIA R0,C
Uitvoer-bestand
DRU
Kopieer
33
SOM Res Lengte=7
A
N
| <Res> … <A>[i]HIA.w R0,0HIA.w R1,0
$lus: OPT R0,<A>(R1+)
VGL.w R1,<N>VSP KL,$lusBIG R0,<Res>
Voorbeeld
| Macro SOM som v. elem. v. rijMACRO
SOM Res,A,N| <Res> (i=0..<N>-1)<A>[i]HIA.w R0,0HIA.w R1,0
$lus: OPT R0,<A>(R1+)VGL.w R1,<N>VSP KL,$lusBIG R0,<Res>
MCREINDE| Begin van het programma
SOM C,X,3HIA R0,CDRUSTP
C: RESGR 1X: 10;20;30
KopieerToestand:
| Macro SOM som v. elem. v. rij| Begin van het programma| C som(i=0..3-1)X[i]
HIA.w R0,0HIA.w R1,0
_1lus: OPT R0,X(R1+)VGL.w R1,3VSP KL,_1lusBIG R0,CHIA R0,CDRU
Uitvoer-bestand
STP
Kopieer
34
SOM Res Lengte=7
A
N
| <Res> … <A>[i]HIA.w R0,0HIA.w R1,0
$lus: OPT R0,<A>(R1+)
VGL.w R1,<N>VSP KL,$lusBIG R0,<Res>
Voorbeeld
| Macro SOM som v. elem. v. rijMACRO
SOM Res,A,N| <Res> (i=0..<N>-1)<A>[i]HIA.w R0,0HIA.w R1,0
$lus: OPT R0,<A>(R1+)VGL.w R1,<N>VSP KL,$lusBIG R0,<Res>
MCREINDE| Begin van het programma
SOM C,X,3HIA R0,CDRUSTP
C: RESGR 1X: 10;20;30
KopieerToestand:
| Macro SOM som v. elem. v. rij| Begin van het programma| C som(i=0..3-1)X[i]
HIA.w R0,0HIA.w R1,0
_1lus: OPT R0,X(R1+)VGL.w R1,3VSP KL,_1lusBIG R0,CHIA R0,CDRUSTP
Uitvoer-bestand
C: RESGR 1
Kopieer
35
SOM Res Lengte=7
A
N
| <Res> … <A>[i]HIA.w R0,0HIA.w R1,0
$lus: OPT R0,<A>(R1+)
VGL.w R1,<N>VSP KL,$lusBIG R0,<Res>
Voorbeeld
| Macro SOM som v. elem. v. rijMACRO
SOM Res,A,N| <Res> (i=0..<N>-1)<A>[i]HIA.w R0,0HIA.w R1,0
$lus: OPT R0,<A>(R1+)VGL.w R1,<N>VSP KL,$lusBIG R0,<Res>
MCREINDE| Begin van het programma
SOM C,X,3HIA R0,CDRUSTP
C: RESGR 1X: 10;20;30
KopieerToestand:
| Macro SOM som v. elem. v. rij| Begin van het programma| C som(i=0..3-1)X[i]
HIA.w R0,0HIA.w R1,0
_1lus: OPT R0,X(R1+)VGL.w R1,3VSP KL,_1lusBIG R0,CHIA R0,CDRUSTP
C: RESGR 1
Uitvoer-bestandX: 10;20;30
Kopieer
36
Extra Macro-directieven
MEVA, MVGL, MVSP, MSPR, MFOUT, MNTS Lokale macro-variabelen Globale voorvertaler-variabelen Globale voorvertaler-etiketten
37
Gegevensstructuren
Globale variabelentabel = GVT
Macro-variabelen In Argumententabel
= ALVT
Globale etikettentabel = GET
Lokale etikettentabel (LET) In macro-definitie-
structuur
38
Gegevensstructuren
Globale variabelentabel = GVT
Macro-variabelen In Argumententabel
= ALVT
Naam Waarde
N 10
Debug 1MEVA N,10MEVA Debug,1
39
Gegevensstructuren
Globale variabelentabel = GVT
Macro-variabelen In Argumententabel
= ALVT
Naam Waarde
Res C
A X
N 3
Naam Waarde
Res C
A X
N 3
N1 2MACRO
SOM Res,A,NMEVA N1,<N>-1…
MCREINDE
40
Gegevensstructuren
Globale etikettentabel = GET
Lokale etikettentabel (LET) In macro-definitie-
structuur
Etiket Lijn
$WHILE 20
$EINDE 25
$IF 33
…$WHILE: MVGL <N>,0
…$EINDE: MNTS
…$IF: MVGL <DEBUG>,10
41
Gegevensstructuren
Globale etikettentabel = GET
Lokale etikettentabel (LET) In macro-definitie-
structuur
SOM Res Lengte=7
A LET
Etiket LijnN
$lus 4
| <Res> … <A>[i]HIA.w R0,0HIA.w R1,0
$lus: OPT R0,<A>(R1+)VGL.w R1,<N>VSP KL,$lusBIG R0,<Res>
42
Gegevensstructuren
1Telt macro-oproepen ( GVT)teller
1Macro-conditie-code ( GVT)MCC
1 / definitieLokale etiketten van de macroLET
1Globale etikettenGET
1 / oproepMacro-argumenten en lokale variabelen
ALVT
1Globale voorvertaler variabelenGVT
AantalInhoudAfkorting
43
Aanpassingen voorvertaler 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
Indien niet gekend: lijnen overslaan tot etiket gevonden
44
RAM
Van bronprogramma tot Uitvoerbaar programma
Module A(met macro’s)
Module B(met macro’s)
Module A(zonder macro’s)
Objectmodule A
VoorvertalerVoorvertaler
VertalerVertaler
BinderBinder
UitvoerbaarProgramma
Module B(zonder macro’s)
Objectmodule B
VoorvertalerVoorvertaler
VertalerVertaler
Programma-bibliotheek
LaderLader
UitvoerbaarProgramma
Broncode
Machinecode
Legende:
45
Macro’s in tekst-context
MACROVERSE ANIMALS,SOUNDOld Mac Donald had a farm, E-I-E-I-OAnd on his farm he had some <ANIMALS>, E-I-E-I-OWith 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
46
Macro’s in tekst-context
Old Mac Donald had a farm, E-I-E-I-OAnd on his farm he had some chicks E-I-E-I-OWith a cheep cheep here and a cheep cheep there,here a cheep, there a cheep, everywhere a cheep \
cheepOld Mac Donald had a farm, E-I-E-I-O
Old Mac Donald had a farm, E-I-E-I-OAnd on his farm he had some ducks E-I-E-I-OWith a quack quack here and a quack quack there,here a quack, there a quack, everywhere a quack \
quackOld Mac Donald had a farm, E-I-E-I-O
…
47
Macro’s in tekst-context
MACROVERSE ANIMALS,SOUNDOld Mac Donald had a farm, E-I-E-I-OAnd on his farm he had some <ANIMALS>, E-I-E-I-OWith 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
MCREINDEVERSE chicks,cheep
VERSE ducks,quack
VERSE turkeys,gobble
Indien ingebouwd in vertaler:
*** fout *** Old: \ onbestaande functiecode
48
Cursustekst
Hoofdstuk 3: pag. 23 pag. 44 Hoofdstuk 3 volledig gezien: pag. 1 pag. 93