1 SOCS Hoofdstuk 1 Computerarchitectuur
2 Overzicht Eenvoudig C Arrays Functies Records Dynamische gegevenstructuren Macro’s C
3 #define N 20 #define DEBUG #define somkwad(x,y) x*x+y*y int a[N], i, j, k; main() { #ifdef DEBUG printint (N); #endif... #if N > 10 i = somkwad(j,a[10]); #else i = somkwad(a[k],a[j]); #endif... } C Naam Definitie Directieven voor de voorvertaler Voorvertaler-directieven Definitie van constanten Verkorte notatie van codefragmenten Voorwaardelijke code
4 Macro’s #define N 20 #define DEBUG #define somkwad(x,y) x*x+y*y int a[N], i, j, k; main() { #ifdef DEBUG printint (N); #endif... #if N > 10 i = somkwad(j,a[10]); #else i = somkwad(a[k],a[j]); #endif... } int a[20], i, j, k; main() { printint (20);... i = j*j + a[10]*a[10];... } C
5 Macro’s #define N 10 #define somkwad(x,y) x*x+y*y int a[N], i, j, k; main() { #ifdef DEBUG printint (N); #endif... #if N > 10 i = somkwad(j,a[10]); #else i = somkwad(a[k],a[j]); #endif... } int a[10], i, j, k; main() {... i = a[k]*a[k] + a[j]*a[j];... } C
6 Macro’s in DRAMA Basisprincipe Eenvoudige DRAMA-macro’s Lokale symbolische adressen Macro-parameters en variabelen Voorwaardelijke macro-opbouw Macro-directieven Genestelde en recursieve macro-oproepen Globale macro-variabelen
7 Basisprincipe LPT: 1 bronbevel 1 doelbevel (machinetaal) Uitzondering: macro-oproep Doel: Stukjes code die verschillende keren voorkomen Slechts 1 keer schrijven (en naam geven) Op verschillende plaatsen inlassen
8 Basisprincipe Voorbeeld: y = | a | + | -3 * b * c | + | 4 + e |; Code om R0 | R0 | ( naam ABSW) Programma: HIA R0,a ABSW HIA R1,R0 HIA.w R0,-3 VER R0,b VER R0,c ABSW OPT R1,R0 HIA.w R0,4 OPT R0,e ABSW OPT R1,R0 Code inlassen om R0 |R0|
9 Eenvoudige DRAMA-macro’s R1 (R1) 6 | Macro ZesdeMacht | Resultaat: R1 (R1) 6 | Wijzigt R1 (resultaat) en R2 MACROZesdeMacht … DRAMA code … … DRAMA code …MCREINDE Directief Hoofding Naam … Lichaam/Romp
10 Eenvoudige DRAMA-macro’s R1 (R1) 6 | Macro ZesdeMacht | Resultaat: R1 (R1) 6 | Wijzigt R1 (resultaat) en R2 MACROZesdeMacht MCREINDE VER R1,R1 VER R1,R2 HIA R2,R1
11 Eenvoudige DRAMA-macro’s Gebruik van de macro macro-oproep | Macro ZesdeMacht | Resultaat: R1 (R1) 6 | Wijzigt R1 en R2 MACROZesdeMacht VER R1,R1 HIA R2,R1 VER R1,R2 MCREINDE | d = (a 6 * b – c) 6 HIA R1,a …STP a:RESGR 1 b:RESGR 1 c:RESGR 1 d:RESGR 1 Macro- oproep ZesdeMacht ZesdeMacht VER R1,b AFT R1,c BIG R1,d
12 Voorvertaler Voor- vertaler Bronprogramma (met macro-definities op -oproepen) Bronprogramma (zonder macro-definities en oproepen) MACRO ZesdeMacht VER R1,R1 … MCREINDE HIA R1,a ZesdeMacht VER R1,b AFT R1,c ZesdeMacht … HIA R1,a VER R1,R1 … VER R1,b AFT R1,c VER R1,R1 … Definitie Oproep Oproep
13 Voorvertaling MACROZesdeMacht VER R1,R1 HIA R2,R1 VER R1,R2 MCREIND HIA R1,a ZesdeMacht VER R1,b AFT R1,c ZesdeMacht BIG R1,d …STP a:RESGR 1 … HIA R1,a Zesdemacht VER R1,b AFT R1,c Zesdemacht BIG R1,d …STP a:RESGR 1 … Macro- oproep Macro- expansie VER R1,R1 HIA R2,R1 VER R1,R2 VER R1,R1 HIA R2,R1 VER R1,R2
14 Opmerkingen LPT (assembleertaal) + mogelijkheid macro’s te definieren = macro-assembleertaal Macro-definitie moet textueel voor de eerste oproep staan Afspraak: Vooraan in programma: alle macro-definities Daarna: Drama-programma (+ macro-oproepen)
15 Symbolische adressen Lichaam van macro: Om het even wat Dus ook symbolische adressen LUS: VGL.w R1,0 Voorbeeld: Macro voor ABSW R0 | R0 |
16 Symbolische adressen R0 | R0 | | y = |a|+|-3*b*c|+|4+e| HIA R0,a ABSW HIA R1,R0 HIA.w R0,-3 VER R0,b VER R0,c ABSW OPT R1,R0 HIA.w R0,4 OPT R0,e ABSW OPT R1,R0 BIG R1,y | Macro ABSW | Resultaat: R0 |R0| | Wijzigt R0 (resultaat) MACROABSW MCREINDE VGL.w R0,0 VER R0,-1 einde: VSP NNEG,einde
17 Voorvertaling MACROABSW VGL.w R0,0 VSP NNEG,einde VER R0,-1 einde: einde:MCREIND HIA R0,a HIA R0,aABSW HIA R1,R0 HIA.w R0,-3 VER R0,b VER R0,c ABSW OPT R1,R0 HIA.w R0,4 OPT R0,e ABSW OPT R1,R0 BIG R1,y HIA R0,a ABSW HIA R1,R0 HIA.w R0,-3 VER R0,b VER R0,c ABSW OPT R1,R0 HIA.w R0,4 OPT R0,e ABSW OPT R1,R0 BIG R1,y VGL.w R0,0 VSP NNEG,einde VER R0,-1 einde: VGL.w R0,0 VSP NNEG,einde VER R0,-1 einde: VGL.w R0,0 VSP NNEG,einde VER R0,-1 einde:
18 Lokale symbolische adressen Alleen betekenis BINNEN een macro-definitie Voorvertaler zet om naar UNIEK symbolisch adres Lokaal symbolisch adres = $etiket UNIEK symbolisch adres = _1etiket, _2etiket, _3etiket, … bij eerste, tweede, derde macro-oproep
19 Lokale symbolische adressen R0 | R0 | | y = |a|+|-3*b*c|+|4+e| HIA R0,a ABSW HIA R1,R0 HIA.w R0,-3 VER R0,b VER R0,c ABSW OPT R1,R0 HIA.w R0,4 OPT R0,e ABSW OPT R1,R0 BIG R1,y | Macro ABSW | Resultaat: R0 |R0| | Wijzigt R0 (resultaat) MACROABSW VGL.w R0,0 VGL.w R0,0 VSP NNEG,einde VSP NNEG,einde VER R0,-1 VER R0,-1 einde: einde:MCREINDE $ VSP NNEG,$einde
20 Voorvertaling MACROABSW VGL.w R0,0 VSP NNEG,$einde VER R0,-1 $einde: $einde:MCREIND HIA R0,a HIA R0,aABSW HIA R1,R0 HIA.w R0,-3 VER R0,b VER R0,c ABSW OPT R1,R0 HIA.w R0,4 OPT R0,e ABSW OPT R1,R0 BIG R1,y HIA R0,a ABSW HIA R1,R0 HIA.w R0,-3 VER R0,b VER R0,c ABSW OPT R1,R0 HIA.w R0,4 OPT R0,e ABSW OPT R1,R0 BIG R1,y VGL.w R0,0 VSP NNEG,_1einde VER R0,-1 _1einde: VGL.w R0,0 VSP NNEG,_2einde VER R0,-1 _2einde: VGL.w R0,0 VSP NNEG,_3einde VER R0,-1 _3einde:
21 Macro-parameters Bruikbaarheid van macro beperkt Gegevens beschikbaar in accumulator of in geheugenregister Parameters Mogelijkheid om ingelaste code aan noden aan te passen Voorbeeld ABSW R1 | R1 |R1| ABSW R2 | R2 |R2| Parameters In hoofding: naam1, naam2, … In lichaam:,, …
22 Macro-parameters Ri | Ri | | y = |a|+|-3*b*c|+|4+e| HIA R0,a ABSW R0 HIA.w R1,-3 VER R1,b VER R1,c ABSW R1 OPT R0,R1 HIA.w R2,4 OPT R2,e ABSW R2 OPT R0,R2 BIG R0,y | Macro ABSW Ri | Parameter Ri | Resultaat: Ri |Ri| | Wijzigt Ri (resultaat) MACRO ABSW Ri MCREINDE VGL.w,0 VER,-1 $einde: VSP NNEG,$einde Parameter
23 Voorvertaling MACRO ABSW Ri VGL.w,0 VSP NNEG,$einde VER,-1 $einde: $einde:MCREIND HIA R0,a HIA R0,a ABSW R0 HIA.w R1,-3 VER R1,b VER R1,c ABSW R1 OPT R0,R1 HIA.w R2,4 OPT R2,e ABSW R2 OPT R0,R2 BIG R0,y HIA R0,a ABSW R0 HIA.w R1,-3 VER R1,b VER R1,c ABSW R1 OPT R0,R1 HIA.w R2,4 OPT R2,e ABSW R2 OPT R0,R2 BIG R0,y VGL.w R0,0 VSP NNEG,_1einde VER R0,-1 _1einde: VGL.w R1,0 VSP NNEG,_2einde VER R1,-1 _2einde: VGL.w R2,0 VSP NNEG,_3einde VER R2,-1 _3einde:
24 Macro-parameters Ri | Ri | | y = |a|+|-3*b*c|+|4+e| HIA R0,a ABSW 0 HIA.w R1,-3 VER R1,b VER R1,c ABSW 1 OPT R0,R1 HIA.w R2,4 OPT R2,e ABSW 2 OPT R0,R2 BIG R0,y | Macro ABSW i | Parameter i | Resultaat: Ri |Ri| | Wijzigt Ri (resultaat) MACRO ABSW i MCREINDE VGL.w R,0 VER R,-1 $einde: VSP NNEG,$einde
25 Voorvertaling MACRO ABSW i VGL.w R,0 VSP NNEG,$einde VER R,-1 $einde: $einde:MCREIND HIA R0,a HIA R0,a ABSW 0 HIA.w R1,-3 VER R1,b VER R1,c ABSW 1 OPT R0,R1 HIA.w R2,4 OPT R2,e ABSW 2 OPT R0,R2 BIG R0,y HIA R0,a ABSW 0 HIA.w R1,-3 VER R1,b VER R1,c ABSW 1 OPT R0,R1 HIA.w R2,4 OPT R2,e ABSW 2 OPT R0,R2 BIG R0,y VGL.w R0,0 VSP NNEG,_1einde VER R0,-1 _1einde: VGL.w R1,0 VSP NNEG,_2einde VER R1,-1 _2einde: VGL.w R2,0 VSP NNEG,_3einde VER R2,-1 _3einde:
26 Macro-parameters z x*x + y*y | Macro SomKwad | Parameter z,x,y | Resultaat: z x*x+y*y | Wijzigt R1 en R2 MACRO SomKwad z,x,y MCREINDE HIA R1, HIA R1, VER R1, VER R1, HIA R2, VER R2, HIA R2, VER R2, OPT R1,R2 BIG R1, OPT R1,R2 BIG R1,
27 Macro-parameters z x*x + y*y SomKwad a,b,c SomKwad e,R5,f | Macro SomKwad | Parameter z,x,y | Resultaat: z x*x+y*y | Wijzigt R1 en R2 MACRO SomKwad z,x,y MCREINDE HIA R1, HIA R1, VER R1, VER R1, HIA R2, VER R2, HIA R2, VER R2, OPT R1,R2 BIG R1, OPT R1,R2 BIG R1, HIA R1,b VER R1,b HIA R2,c VER R2,c OPT R1,R2 BIG R1,a HIA R1,R5 VER R1,R5 HIA R2,f VER R2,f OPT R1,R2 BIG R1,e
28 Macro-parameters z x*x + y*y SomKwad R5,b,c SomKwad e,10,f | Macro SomKwad | Parameter z,x,y | Resultaat: z x*x+y*y | Wijzigt R1 en R2 MACRO SomKwad z,x,y MCREINDE HIA R1, HIA R1, VER R1, VER R1, HIA R2, VER R2, HIA R2, VER R2, OPT R1,R2 BIG R1, OPT R1,R2 BIG R1, HIA R1,b VER R1,b HIA R2,c VER R2,c OPT R1,R2 BIG R1,R5 HIA R1,10 VER R1,10 HIA R2,f VER R2,f OPT R1,R2 BIG R1,e Ongeldig Drama- bevel Niet verwacht resultaat!
29 Macro-parameters If-then-else constructie if (x <= y) { … kleiner of gelijk … } else { … groter dan … } IfThenElse x,y,KLG,klg,grd,1 klg:… | kleiner of gelijk … SPR endif grd:… | groter dan … endif:…
30 Macro-parameters If-then-else constructie IfThenElse x,y,KLG,klg,grd,1 klg:… | kleiner of gelijk … SPR endif grd:… | groter dan … endif:… | Macro IfThenElse | Parameters: | a,b,vw,dan,anders,reg | Resultaat: | if (a vw b) SPR dan | else SPR anders | Wijzigt register Rreg MACRO IfThenElse a,b,vw,dan,\ anders,reg IfThenElse a,b,vw,dan,\ anders,reg MCREINDE HIA R, HIA R, VGL R, VGL R, VSP, VSP, klg:… | kleiner of gelijk … SPR endif grd:… | groter dan … endif:… SPR SPR HIA R1,x VGL R1,y VSP KLG,klg SPR grd
31 Macro-variabelen Doel Tijdens de expansie berekening uitvoeren Geen declaratie Bestaan zodra eerste toekenning MEVA-directief MEVA variabele,expressie Voorbeeld: MEVA A,10 MEVA B, -20 Beperkingen: Uitdrukking gehele waarde Uitdrukking: macro-variabelen, -parameters, +, -, *, /, (, ) Lokale variabele! na oproep verdwenen
32 Macro-variabelen R i R i-1 + R i + R i+1 TelOp 4 TelOp 8 TelOp 9 TelOp 0 | Macro TelOp | Parameter i (0<i<9) | Resultaat: R i +=R i-1 +R i+1 MACRO TelOp i MCREINDE MEVA reg, -1 OPT R,R OPT R,R MEVA reg, +1 OPT R,R OPT R,R OPT R4,R3 OPT R4,R5 OPT R8,R7 OPT R8,R9 Ongeldig Adres als R10 niet ge- definieerd OPT R9,R8 OPT R9,R10 OPT R0,R-1 OPT R0,R1 Ongeldig Adres als R niet ge- definieerd
33 Voorwaardelijke macro-opbouw Doel: Gelijkaardige maar niet identieke code inlassen Parameters Verschillend aantal bevelen? Macro-definitie Voor meest algemene geval Voorwaardelijke macro-opbouw: Alleen die stukken inlassen die nodig zijn Macro-directieven Voorvertaler! M… Voorbeelden: MEVA, MVGL, MVSP, MSPR, …
34 Voorwaardelijk macro-opbouw Res A 1 + … + A n (n=1.. 3) | d a + b + c Som 3,d,a,b,c | k l + m Som 2,k,l,m | x y Som 1,x,y | Macro Som | Resultaat: Res = A 1 +…+A N | Wijzigt R1 MACRO Som N,Res,A1,A2,A3 MCREINDE HIA R1, HIA R1, OPT R1, OPT R1, HIA R1,a OPT R1,b OPT R1,c BIG R1,d HIA R1,l OPT R1,m BIG R1,k HIA R1,y BIG R1,x MVGL,1 MVSP GEL,$bergweg MVGL,2 MVSP GEL,$bergweg OPT R1, OPT R1, $bergweg: MNTS BIG R1, BIG R1,
35 Macro-directieven DirectiefBetekenis MACRO Nieuwe macro-definitie MCREINDE Einde van macro-definitie MVGL uitdr1,uitdr2 MCC resultaat van vergelijking uitdr1 en uitdr2 MVSP conditie,$etiket Indien MCC aan conditie voldoet, ga verder bij $etiket MSPR $etiket Ga verder bij lijn met $etiket MEVA variabele,uitdrukking Variabele uitdrukking MNTS Loos directief (om macro-etiket voor te plaatsen) MFOUT “foutenboodschap” Voorvertaler drukt “foutenboodschap” af en stopt de voorvertaling
36 Voorwaardelijk macro-opbouw Res (Getal) Exp (0 <= Exp) | b a 3 Macht b,a,3,R1 | y x 0 Macht y,x,0,R0 | k m -1 Macht k,m,-1,R3 | Macro Macht | Resultaat: Res = (Getal) Exp | Wijzigt R Reg MACRO Macht Res,Getal,Exp,Reg MCREINDE HIA.w,1 VER, VER, HIA.w R1,1 VER R1,a BIG R1,b HIA.w R0,1 BIG R0,y $lus: MVGL,0 MVSP GEL,$bergweg MSPR $lus MEVA Exp, -1 $bergweg: MNTS BIG, BIG, MVGL,0 MVSP GRG,$lus MFOUT “Exp moet >= 0” HIA.w R3,1 *** fout *** Exp moet >= 0
37 Genestelde en recursieve macro-oproepen Genestelde macro-oproep Binnen macro-definitie andere macro oproepen Recursieve macro-oproep Binnen macro-definitie zichzelf terug oproepen Mogelijk mits voorwaardelijk macro-opbouw
38 Genestelde en recursieve macro-oproepen Res A 1 + … + A N (N > 0) | Macro Som | Res=a 1 +…+a n (0<n<=4) | Wijzigt R1 MACRO Som Res,n,a1,a2,a3,a4 MCREINDE HIA R1, HIA R1, Rsom,,, Rsom,,, BIG R1, BIG R1, MVGL,0 MVSP GR,$pos MFOUT “n moet >= 0” | Macro RSom | R1 += b 1 +…+b n-1 MACRO Rsom n,b1,b2,b3 MCREINDE MEVA n, -1 MVGL,1 MVSP KL,$einde OPT R1, OPT R1, Rsom,, Rsom,, $einde: MNTS $pos: MVGL,4 MVSP KLG,$ok MFOUT “n moet <= 4” $ok:MNTS
39 Genestelde en recursieve macro-oproepen Res A 1 + … + A N (N > 0) | x a + b + c Som x,3,a,b,c | Macro Som | Res=a 1 +…+a n (0<n<=4) | Wijzigt R1 MACRO Som Res,n,a1,a2,a3,a4 MCREINDE HIA R1, HIA R1, Rsom,,, Rsom,,, BIG R1, BIG R1, MVGL,0 MVSP GR,$pos MFOUT “n moet >= 0” $pos: MVGL,4 MVSP KLG,$ok MFOUT “n moet <= 4” $ok:MNTS HIA R1,a
40 Genestelde en recursieve macro-oproepen Res A 1 + … + A N (N > 0) | x a + b + c Som x,3,a,b,c | Macro Som | Res=a 1 +…+a n (0<n<=4) | Wijzigt R1 MACRO Som Res,n,a1,a2,a3,a4 MCREINDE HIA R1, HIA R1, Rsom,,, Rsom,,, BIG R1, BIG R1, MVGL,0 MVSP GR,$pos MFOUT “n moet >= 0” $pos: MVGL,4 MVSP KLG,$ok MFOUT “n moet <= 4” $ok:MNTS HIA R1,a Rsom 3,b,c,
41 Genestelde en recursieve macro-oproepen Res A 1 + … + A N (N > 0) | x a + b + c Som x,3,a,b,c HIA R1,a Rsom 3,b,c, | Macro RSom | R1 += b 1 +…+b n-1 MACRO Rsom n,b1,b2,b3 MCREINDE MEVA n, -1 MVGL,1 MVSP KL,$einde OPT R1, OPT R1, Rsom,, Rsom,, $einde: MNTS OPT R1,b Rsom 2,c,, n 3 b1 b b2 c b3 n 2 b1 b b2 c b3
42 Genestelde en recursieve macro-oproepen Res A 1 + … + A N (N > 0) | x a + b + c Som x,3,a,b,c HIA R1,a Rsom 3,b,c, | Macro RSom | R1 += b 1 +…+b n-1 MACRO Rsom n,b1,b2,b3 MCREINDE MEVA n, -1 MVGL,1 MVSP KL,$einde OPT R1, OPT R1, Rsom,, Rsom,, $einde: MNTS OPT R1,b Rsom 2,c,, OPT R1,c Rsom 1,,, n 2 b1 b b2 c b3 n 2 b1 c b2 b3 n 1 b1 c b2 b3
43 n 1 b1 b2 b3 Genestelde en recursieve macro-oproepen Res A 1 + … + A N (N > 0) | x a + b + c Som x,3,a,b,c HIA R1,a Rsom 3,b,c, | Macro RSom | R1 += b 1 +…+b n-1 MACRO Rsom n,b1,b2,b3 MCREINDE MEVA n, -1 MVGL,1 MVSP KL,$einde OPT R1, OPT R1, Rsom,, Rsom,, $einde: MNTS OPT R1,b Rsom 2,c,, OPT R1,c Rsom 1,,, n 2 b1 b b2 c b3 n 1 b1 c b2 b3 n 0 b1 b2 b3
44 Genestelde en recursieve macro-oproepen Res A 1 + … + A N (N > 0) | x a + b + c Som x,3,a,b,c HIA R1,a Rsom 3,b,c, | Macro RSom | R1 += b 1 +…+b n-1 MACRO Rsom n,b1,b2,b3 MCREINDE MEVA n, -1 MVGL,1 MVSP KL,$einde OPT R1, OPT R1, Rsom,, Rsom,, $einde: MNTS OPT R1,b Rsom 2,c,, OPT R1,c Rsom 1,,, n 2 b1 b b2 c b3 n 1 b1 c b2 b3
45 Genestelde en recursieve macro-oproepen Res A 1 + … + A N (N > 0) | x a + b + c Som x,3,a,b,c HIA R1,a Rsom 3,b,c, | Macro RSom | R1 += b 1 +…+b n-1 MACRO Rsom n,b1,b2,b3 MCREINDE MEVA n, -1 MVGL,1 MVSP KL,$einde OPT R1, OPT R1, Rsom,, Rsom,, $einde: MNTS OPT R1,b Rsom 2,c,, OPT R1,c n 2 b1 b b2 c b3
46 Genestelde en recursieve macro-oproepen Res A 1 + … + A N (N > 0) | x a + b + c Som x,3,a,b,c HIA R1,a Rsom 3,b,c, | Macro RSom | R1 += b 1 +…+b n-1 MACRO Rsom n,b1,b2,b3 MCREINDE MEVA n, -1 MVGL,1 MVSP KL,$einde OPT R1, OPT R1, Rsom,, Rsom,, $einde: MNTS OPT R1,b OPT R1,c
47 Genestelde en recursieve macro-oproepen Res A 1 + … + A N (N > 0) | x a + b + c Som x,3,a,b,c HIA R1,a OPT R1,b OPT R1,c | Macro Som | Res=a 1 +…+a n (0<n<=4) | Wijzigt R1 MACRO Som Res,n,a1,a2,a3,a4 MCREINDE HIA R1, HIA R1, Rsom,,, Rsom,,, BIG R1, BIG R1, MVGL,0 MVSP GR,$pos MFOUT “n moet >= 0” $pos: MVGL,4 MVSP KLG,$ok MFOUT “n moet <= 4” $ok:MNTS BIG R1,x
48 Genestelde en recursieve macro-oproepen Res A 1 + … + A N (N > 0) | x a + b + c Som x,3,a,b,c HIA R1,a OPT R1,b OPTR1,c BIGR1,x | Macro Som | Res=a 1 +…+a n (0<n<=4) | Wijzigt R1 MACRO Som Res,n,a1,a2,a3,a4 MCREINDE HIA R1, HIA R1, Rsom,,, Rsom,,, BIG R1, BIG R1, MVGL,0 MVSP GR,$pos MFOUT “n moet >= 0” $pos: MVGL,4 MVSP KLG,$ok MFOUT “n moet <= 4” $ok:MNTS
49 Globale macro-variabelen Doel: Waarden langer bewaren (over macro-oproepen heen) Constanten Werkwijze: MEVA buiten macro-definitie MEVA LAB,1 …MACRO Spring Spring SPR NAAR SPR NAAR MEVA LAB, +1 MEVA LAB, +1 …MCREINDE… MEVA N,10 … VGL.w R1, VGL.w R1, VSP GEL,endwh … A:RESGR A:RESGR
50 Globale macro-variabelen MEVA LAB,1 MACRO ReserveerPlaats N ReserveerPlaats N SPR NAAR SPR NAAR MEVA LAB, +1 MEVA LAB, +1 RESGR RESGR NAAR<LAB>:MCREINDE HIA.w R1,10 ReserveerPlaats 10 OPT R1,b … HIA.w R2,100 ReserveerPlaats 20 AFT R2,R1 … HIA.w R1,10 ReserveerPlaats 10 OPT R1,b … HIA.w R2,100 ReserveerPlaats 20 AFT R2,R1 … SPR NAAR1 RESGR 10 NAAR1: SPR NAAR2 RESGR 20 NAAR2:
51 Globale macro-variabelen MEVA N,10 … VGL.w R1, VGL.w R1, VSP GEL,endwh HIA.w R2,10 …STP A:RESGR A:RESGR … VGL.w R1,10 VSP GEL,endwh HIA.w R2,10 …STP A:RESGR 10 MEVA N,30 … VGL.w R1, VGL.w R1, VSP GEL,endwh HIA.w R2,10 …STP A:RESGR A:RESGR … VGL.w R1,30 VSP GEL,endwh HIA.w R2,10 …STP A:RESGR 30
52 Directieven buiten macro- definitie MEVA, MVGL, MVSP, MSPR, MFOUT Ook buiten macro-definitie te gebruiken Voorbeeld: Voorwaardelijke programma-opbouw Vb. Bepaalde stukken code overslaan MEVA DEBUG,1 | Berekening van tussenres. in R1 … MVGL,1 MVSP NGEL,$nodebug HIA R0,R1 DRU $nodebug: MNTS … Bevelen ingelast als DEBUG=1
53 Directieven buiten macro- definitie MEVA DEBUG,1 … HIA.w R1,a AFT R1,b MVGL,1 MVSP NGEL,$gdb HIA R0,R1 DRU $gdb:MNTS BIG R1,c … … HIA.w R1,a AFT R1,b HIA R0,R1 DRU BIG R1,c … Debugcode aanwezig
54 Directieven buiten macro- definitie MEVA DEBUG,0 … HIA.w R1,a AFT R1,b MVGL,1 MVSP NGEL,$gdb HIA R0,R1 DRU $gdb:MNTS BIG R1,c … … HIA.w R1,a AFT R1,b BIG R1,c … Debugcode weggelaten
55 Cursustekst Hoofdstuk 1: pag. 165 einde