SOCS

48
1 SOCS Hoofdstuk 3 Basisprogrammatuu r

description

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, OPT R0, MCREINDE - PowerPoint PPT Presentation

Transcript of SOCS

Page 1: SOCS

1

SOCS

Hoofdstuk 3

Basisprogrammatuur

Page 2: SOCS

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

Page 3: SOCS

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

Page 4: SOCS

4

Implementatie

Aparte voorvertaler Macro-verwerking

= Symboolmanipulatie

Code-generatie In andere context

gebruiken (bijv. tekst)

Ingebouwd in vertaler Betere

foutenboodschappen

Gebonden aan taal

Page 5: SOCS

5

Taken

Niets met macro’s te maken

Macro-definitie

Macro-oproep

Toestanden

Kopieermode Definitiemode Expansiemode

laten staan

onthouden en verwijderen

vervangen

Page 6: SOCS

6

Enkel MACRO en MCREINDE

Enkel MACRO- en MCREINDE-directieven

Geen: MEVA, MVSP, MSPR, MFOUT, MNTS

Wel: Parameters Lokale symbolische adressen

Page 7: SOCS

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

Page 8: SOCS

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

Page 9: SOCS

9

Toestandsdiagramma

Kopieer-mode

Definitie-mode

Expansie-mode

hoofding

andere lijn

MACRO

MCREINDE

andere lijn

macro-oproep

einde lichaam

genesteoproep

eindegenesteoproep

Page 10: SOCS

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

Page 11: SOCS

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

Page 12: SOCS

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

Page 13: SOCS

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

Page 14: SOCS

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]

Page 15: SOCS

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

Page 16: SOCS

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

Page 17: SOCS

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+)

Page 18: SOCS

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>

Page 19: SOCS

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

Page 20: SOCS

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>

Page 21: SOCS

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

Page 22: SOCS

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

Page 23: SOCS

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

Page 24: SOCS

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

Page 25: SOCS

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

Page 26: SOCS

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:

Page 27: SOCS

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:

Page 28: SOCS

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:

Page 29: SOCS

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:

Page 30: SOCS

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

Page 31: SOCS

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

Page 32: SOCS

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

Page 33: SOCS

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

Page 34: SOCS

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

Page 35: SOCS

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

Page 36: SOCS

36

Extra Macro-directieven

MEVA, MVGL, MVSP, MSPR, MFOUT, MNTS Lokale macro-variabelen Globale voorvertaler-variabelen Globale voorvertaler-etiketten

Page 37: SOCS

37

Gegevensstructuren

Globale variabelentabel = GVT

Macro-variabelen In Argumententabel

= ALVT

Globale etikettentabel = GET

Lokale etikettentabel (LET) In macro-definitie-

structuur

Page 38: SOCS

38

Gegevensstructuren

Globale variabelentabel = GVT

Macro-variabelen In Argumententabel

= ALVT

Naam Waarde

N 10

Debug 1MEVA N,10MEVA Debug,1

Page 39: SOCS

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

Page 40: SOCS

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

Page 41: SOCS

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>

Page 42: SOCS

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

Page 43: SOCS

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

Page 44: SOCS

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:

Page 45: SOCS

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

Page 46: SOCS

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

Page 47: SOCS

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

Page 48: SOCS

48

Cursustekst

Hoofdstuk 3: pag. 23 pag. 44 Hoofdstuk 3 volledig gezien: pag. 1 pag. 93