1 / 55

SOCS

SOCS. Hoofdstuk 1 Computerarchitectuur. C. Overzicht. Eenvoudig C Arrays Functies Records Dynamische gegevenstructuren 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

zeal
Télécharger la présentation

SOCS

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. SOCS Hoofdstuk 1 Computerarchitectuur

  2. C Overzicht • Eenvoudig C • Arrays • Functies • Records • Dynamische gegevenstructuren • Macro’s

  3. #defineN20 #defineDEBUG #definesomkwad(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 ... } Voorvertaler-directieven Definitie van constanten Verkorte notatie van codefragmenten Voorwaardelijke code C Macro’s Directieven voor de voorvertaler Naam Definitie

  4. #defineN20 #defineDEBUG #definesomkwad(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 Macro’s

  5. #defineN10 #definesomkwad(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 Macro’s

  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. Code inlassen om R0  |R0| 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

  9. Eenvoudige DRAMA-macro’s • R1  (R1)6 | Macro ZesdeMacht | Resultaat: R1  (R1)6 | Wijzigt R1 (resultaat) en R2 MACRO ZesdeMacht … DRAMA code … MCREINDE Directief • Hoofding • Naam • … Lichaam/Romp Directief

  10. Eenvoudige DRAMA-macro’s • R1  (R1)6 | Macro ZesdeMacht | Resultaat: R1  (R1)6 | Wijzigt R1 (resultaat) en R2 MACRO ZesdeMacht MCREINDE VER R1,R1 HIA R2,R1 VER R1,R2 VER R1,R2

  11. Gebruik van de macro  macro-oproep | Macro ZesdeMacht | Resultaat: R1  (R1)6 | Wijzigt R1 en R2 MACRO ZesdeMacht VER R1,R1 HIA R2,R1 VER R1,R2 VER R1,R2 MCREINDE | d = (a6 * b – c)6 HIA R1,a … STP a: RESGR 1 b: RESGR 1 c: RESGR 1 d: RESGR 1 Macro-oproep Macro-oproep Eenvoudige DRAMA-macro’s ZesdeMacht VER R1,b AFT R1,c ZesdeMacht BIG R1,d

  12. 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 … … Voorvertaler Definitie Voor-vertaler Oproep Oproep Bronprogramma(zonder macro-definities en oproepen) Bronprogramma (met macro-definities op -oproepen)

  13. MACRO ZesdeMacht VER R1,R1 HIA R2,R1 VER R1,R2 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 Voorvertaling VER R1,R1 HIA R2,R1 VER R1,R2 VER R1,R2 VER R1,R1 HIA R2,R1 VER R1,R2 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. 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 Symbolische adressen | Macro ABSW | Resultaat: R0  |R0| | Wijzigt R0 (resultaat) MACRO ABSW MCREINDE VGL.w R0,0 VSP NNEG,einde VER R0,-1 einde:

  17. MACRO ABSW VGL.w R0,0 VSP NNEG,einde VER R0,-1 einde: MCREIND 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 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 VGL.w R0,0 VSP NNEG,einde VER R0,-1 VGL.w R0,0 VSP NNEG,einde VER R0,-1 einde: einde: einde: Voorvertaling Foutief DRAMA- programma!

  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. 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 Lokale symbolische adressen | Macro ABSW | Resultaat: R0  |R0| | Wijzigt R0 (resultaat) MACRO ABSW VGL.w R0,0 VSP NNEG,einde VER R0,-1 einde: MCREINDE VSP NNEG,$einde $

  20. MACRO ABSW VGL.w R0,0 VSP NNEG,$einde VER R0,-1 $einde: MCREIND 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 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 VGL.w R0,0 VSP NNEG,_2einde VER R0,-1 VGL.w R0,0 VSP NNEG,_3einde VER R0,-1 _1einde: _2einde: _3einde: Voorvertaling

  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: <naam1>, <naam1>, …

  22. 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-parameters | Macro ABSW Ri | Parameter Ri | Resultaat: Ri  |Ri| | Wijzigt Ri (resultaat) MACRO ABSW Ri MCREINDE Parameter VGL.w <Ri>,0 VSP NNEG,$einde VER <Ri>,-1 $einde: Parameter

  23. MACRO ABSW Ri VGL.w <Ri>,0 VSP NNEG,$einde VER <Ri>,-1 $einde: MCREIND 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 VGL.w R1,0 VSP NNEG,_2einde VER R1,-1 VGL.w R2,0 VSP NNEG,_3einde VER R2,-1 _1einde: _2einde: _3einde: Voorvertaling

  24. 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-parameters | Macro ABSW i | Parameter i | Resultaat: Ri  |Ri| | Wijzigt Ri (resultaat) MACRO ABSW i MCREINDE VGL.w R<i>,0 VSP NNEG,$einde VER R<i>,-1 $einde:

  25. MACRO ABSW i VGL.w R<i>,0 VSP NNEG,$einde VER R<i>,-1 $einde: MCREIND 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 VGL.w R1,0 VSP NNEG,_2einde VER R1,-1 VGL.w R2,0 VSP NNEG,_3einde VER R2,-1 _1einde: _2einde: _3einde: Voorvertaling

  26. z  x*x + y*y Macro-parameters | Macro SomKwad | Parameter z,x,y | Resultaat: zx*x+y*y | Wijzigt R1 en R2 MACRO SomKwad z,x,y MCREINDE HIA R1,<x> VER R1,<x> HIA R2,<y>VER R2,<y> OPT R1,R2BIG R1,<z>

  27. z  x*x + y*y SomKwad a,b,c SomKwad e,R5,f Macro-parameters HIA R1,b VER R1,b HIA R2,c VER R2,c OPT R1,R2 BIG R1,a | Macro SomKwad | Parameter z,x,y | Resultaat: zx*x+y*y | Wijzigt R1 en R2 MACRO SomKwad z,x,y MCREINDE HIA R1,<x> VER R1,<x> HIA R1,R5 VER R1,R5 HIA R2,f VER R2,f OPT R1,R2 BIG R1,e HIA R2,<y>VER R2,<y> OPT R1,R2BIG R1,<z>

  28. z  x*x + y*y SomKwad R5,b,c SomKwad e,10,f Macro-parameters HIA R1,b VER R1,b HIA R2,c VER R2,c OPT R1,R2 BIG R1,R5 | Macro SomKwad | Parameter z,x,y | Resultaat: zx*x+y*y | Wijzigt R1 en R2 MACRO SomKwad z,x,y MCREINDE Ongeldig Drama-bevel HIA R1,<x> VER R1,<x> HIA R1,10 VER R1,10 HIA R2,f VER R2,f OPT R1,R2 BIG R1,e HIA R2,<y>VER R2,<y> Nietverwachtresultaat! OPT R1,R2BIG R1,<z>

  29. If-then-else constructie Macro-parameters IfThenElse x,y,KLG,klg,grd,1 klg: … | kleiner of gelijk … SPR endif grd: … | groter dan … endif: … if (x <= y) { … kleiner of gelijk … } else { … groter dan … }

  30. If-then-else constructie IfThenElse x,y,KLG,klg,grd,1 klg: … | kleiner of gelijk … SPR endif grd: … | groter dan … endif: … Macro-parameters | 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 MCREINDE klg: … | kleiner of gelijk … SPR endif grd: … | groter dan … endif: … HIA R1,x VGL R1,y VSP KLG,klg SPR grd HIA R<reg>,<a> VGL R<reg>,<b> VSP <vw>,<dan> SPR <anders>

  31. Macro-variabelen • Doel • Tijdens de expansie berekening uitvoeren • Geen declaratie • Bestaan zodra eerste toekenning • MEVA-directiefMEVA variabele,expressie • Voorbeeld:MEVA A,10 MEVA B,<A>-20 • Beperkingen: • Uitdrukking  gehele waarde • Uitdrukking: macro-variabelen, -parameters, +, -, *, /, (, ) • Lokale variabele!  na oproep verdwenen

  32. Ri Ri-1 + Ri + Ri+1 TelOp 4 TelOp 8 TelOp 9 TelOp 0 Macro-variabelen OPT R4,R3 OPT R4,R5 | Macro TelOp | Parameter i (0<i<9) | Resultaat: Ri+=Ri-1+Ri+1 MACRO TelOp i MCREINDE OPT R8,R7 OPT R8,R9 MEVA reg,<i>-1 OPT R<i>,R<reg> Ongeldig Adres als R10 niet ge-definieerd MEVA reg,<i>+1 OPT R<i>,R<reg> OPT R9,R8 OPT R9,R10 Ongeldig Adres als R niet ge-definieerd OPT R0,R-1 OPT R0,R1

  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. Res  A1 + … + An (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 Voorwaardelijk macro-opbouw | Macro Som | Resultaat: Res = A1+…+AN | Wijzigt R1 MACRO Som N,Res,A1,A2,A3 MCREINDE HIA R1,a OPT R1,b OPT R1,c BIG R1,d HIA R1,<A1> MVGL <N>,1 MVSP GEL,$bergweg HIA R1,l OPT R1,m BIG R1,k OPT R1,<A2> MVGL <N>,2 MVSP GEL,$bergweg OPT R1,<A3> $bergweg: MNTS BIG R1,<Res> HIA R1,y BIG R1,x

  35. Macro-directieven

  36. Res  (Getal)Exp (0 <= Exp) | b  a3 Macht b,a,3,R1 | y  x0 Macht y,x,0,R0 | k  m-1 Macht k,m,-1,R3 Voorwaardelijk macro-opbouw | Macro Macht| Resultaat: Res = (Getal)Exp | Wijzigt RReg MACRO Macht Res,Getal,Exp,Reg MCREINDE HIA.w R1,1 VER R1,a VER R1,a VER R1,a BIG R1,b HIA.w <Reg>,1 MVGL <Exp>,0 MVSP GRG,$lusMFOUT “Exp moet >= 0” $lus: MVGL <Exp>,0 MVSP GEL,$bergweg HIA.w R0,1 BIG R0,y VER <Reg>,<Getal> MEVA Exp,<Exp>-1 MSPR $lus $bergweg: MNTS HIA.w R3,1 *** fout *** Exp moet >= 0 BIG <Reg>,<Res>

  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. Res  A1 + … + AN (N > 0) Genestelde en recursieve macro-oproepen | Macro Som| Res=a1+…+an (0<n<=4) | Wijzigt R1 MACRO Som Res,n,a1,a2,a3,a4 MCREINDE | Macro RSom| R1 += b1+…+bn-1 MACRO Rsom n,b1,b2,b3 MCREINDE MEVA n,<n>-1 MVGL <n>,1MVSP KL,$einde MVGL <n>,0 MVSP GR,$pos MFOUT “n moet >= 0” OPT R1,<b1> $pos: MVGL <n>,4 MVSP KLG,$ok MFOUT “n moet <= 4” $ok: MNTS Rsom <n>,<b2>,<b3> $einde: MNTS HIA R1,<a1> Rsom <n>,<a2>,<a3>,<a4> BIG R1,<Res>

  39. Res  A1 + … + AN (N > 0) | x  a + b + c Som x,3,a,b,c Genestelde en recursieve macro-oproepen | Macro Som| Res=a1+…+an (0<n<=4) | Wijzigt R1 MACRO Som Res,n,a1,a2,a3,a4 MCREINDE HIA R1,a MVGL <n>,0 MVSP GR,$pos MFOUT “n moet >= 0” $pos: MVGL <n>,4 MVSP KLG,$ok MFOUT “n moet <= 4” $ok: MNTS HIA R1,<a1> Rsom <n>,<a2>,<a3>,<a4> BIG R1,<Res>

  40. Res  A1 + … + AN (N > 0) | x  a + b + c Som x,3,a,b,c Genestelde en recursieve macro-oproepen | Macro Som| Res=a1+…+an (0<n<=4) | Wijzigt R1 MACRO Som Res,n,a1,a2,a3,a4 MCREINDE HIA R1,a Rsom 3,b,c, MVGL <n>,0 MVSP GR,$pos MFOUT “n moet >= 0” $pos: MVGL <n>,4 MVSP KLG,$ok MFOUT “n moet <= 4” $ok: MNTS HIA R1,<a1> Rsom <n>,<a2>,<a3>,<a4> BIG R1,<Res>

  41. Res  A1 + … + AN (N > 0) | x  a + b + c Som x,3,a,b,c | Macro RSom| R1 += b1+…+bn-1 MACRO Rsom n,b1,b2,b3 MCREINDE MEVA n,<n>-1 MVGL <n>,1MVSP KL,$einde OPT R1,<b1> Rsom <n>,<b2>,<b3> $einde: MNTS Genestelde en recursieve macro-oproepen HIA R1,a Rsom 3,b,c, n  3 b1  b b2  c b3  n  2 b1  b b2  c b3  OPT R1,b Rsom 2,c,,

  42. Res  A1 + … + AN (N > 0) | x  a + b + c Som x,3,a,b,c | Macro RSom| R1 += b1+…+bn-1 MACRO Rsom n,b1,b2,b3 MCREINDE MEVA n,<n>-1 MVGL <n>,1MVSP KL,$einde OPT R1,<b1> Rsom <n>,<b2>,<b3> $einde: MNTS Genestelde en recursieve macro-oproepen HIA R1,a Rsom 3,b,c, n  2 b1  b b2  c b3  OPT R1,b Rsom 2,c,, n  2 b1  c b2  b3  n  1 b1  c b2  b3  OPT R1,c Rsom 1,,,

  43. Res  A1 + … + AN (N > 0) | x  a + b + c Som x,3,a,b,c | Macro RSom| R1 += b1+…+bn-1 MACRO Rsom n,b1,b2,b3 MCREINDE MEVA n,<n>-1 MVGL <n>,1MVSP KL,$einde OPT R1,<b1> Rsom <n>,<b2>,<b3> $einde: MNTS Genestelde en recursieve macro-oproepen HIA R1,a Rsom 3,b,c, n  2 b1  b b2  c b3  OPT R1,b Rsom 2,c,, n  1 b1  c b2  b3  OPT R1,c Rsom 1,,, n  0 b1  b2  b3  n  1 b1  b2  b3 

  44. Res  A1 + … + AN (N > 0) | x  a + b + c Som x,3,a,b,c | Macro RSom| R1 += b1+…+bn-1 MACRO Rsom n,b1,b2,b3 MCREINDE MEVA n,<n>-1 MVGL <n>,1MVSP KL,$einde OPT R1,<b1> Rsom <n>,<b2>,<b3> $einde: MNTS Genestelde en recursieve macro-oproepen HIA R1,a Rsom 3,b,c, n  2 b1  b b2  c b3  OPT R1,b Rsom 2,c,, n  1 b1  c b2  b3  OPT R1,c Rsom 1,,,

  45. Res  A1 + … + AN (N > 0) | x  a + b + c Som x,3,a,b,c | Macro RSom| R1 += b1+…+bn-1 MACRO Rsom n,b1,b2,b3 MCREINDE MEVA n,<n>-1 MVGL <n>,1MVSP KL,$einde OPT R1,<b1> Rsom <n>,<b2>,<b3> $einde: MNTS Genestelde en recursieve macro-oproepen HIA R1,a Rsom 3,b,c, n  2 b1  b b2  c b3  OPT R1,b Rsom 2,c,, OPT R1,c

  46. Res  A1 + … + AN (N > 0) | x  a + b + c Som x,3,a,b,c | Macro RSom| R1 += b1+…+bn-1 MACRO Rsom n,b1,b2,b3 MCREINDE MEVA n,<n>-1 MVGL <n>,1MVSP KL,$einde OPT R1,<b1> Rsom <n>,<b2>,<b3> $einde: MNTS Genestelde en recursieve macro-oproepen HIA R1,a Rsom 3,b,c, OPT R1,b OPT R1,c

  47. Res  A1 + … + AN (N > 0) | x  a + b + c Som x,3,a,b,c | Macro Som| Res=a1+…+an (0<n<=4) | Wijzigt R1 MACRO Som Res,n,a1,a2,a3,a4 MCREINDE MVGL <n>,0 MVSP GR,$pos MFOUT “n moet >= 0” $pos: MVGL <n>,4 MVSP KLG,$ok MFOUT “n moet <= 4” $ok: MNTS HIA R1,<a1> Rsom <n>,<a2>,<a3>,<a4> BIG R1,<Res> Genestelde en recursieve macro-oproepen HIA R1,a OPT R1,b OPT R1,c BIG R1,x

  48. Res  A1 + … + AN (N > 0) | x  a + b + c Som x,3,a,b,c | Macro Som| Res=a1+…+an (0<n<=4) | Wijzigt R1 MACRO Som Res,n,a1,a2,a3,a4 MCREINDE MVGL <n>,0 MVSP GR,$pos MFOUT “n moet >= 0” $pos: MVGL <n>,4 MVSP KLG,$ok MFOUT “n moet <= 4” $ok: MNTS HIA R1,<a1> Rsom <n>,<a2>,<a3>,<a4> BIG R1,<Res> Genestelde en recursieve macro-oproepen HIA R1,a OPT R1,b OPT R1,c BIG R1,x

  49. Globale macro-variabelen • Doel: • Waarden langer bewaren (over macro-oproepen heen) • Constanten • Werkwijze: MEVA buiten macro-definitie MEVA N,10 … VGL.w R1,<N> VSP GEL,endwh … A: RESGR <N> MEVA LAB,1 … MACRO Spring SPR NAAR<LAB> MEVA LAB,<LAB>+1 … MCREINDE …

  50. MEVA LAB,1 MACRO ReserveerPlaats N SPR NAAR<LAB> MEVA LAB,<LAB>+1 RESGR <N> 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 SPR NAAR2 RESGR 20 NAAR1: NAAR2: Globale macro-variabelen

More Related