1 SOCS Hoofdstuk 1 Computerarchitectuur. 2 Overzicht Eenvoudig C Arrays Functies Records Dynamische gegevenstructuren Macro’s C.

Slides:



Advertisements
Verwante presentaties
1.larmoire. 2. lescalier 3. La grand-mere 4. Le canapé
Advertisements

De gemiddelde leerling
BRIDGE Vervolgcursus Vervolg op starterscursus Bridgeclub Schiedam ‘59 info: Maandagavond: 19: – of
Doublet deel 1 – de basis.
Evaluatie van MS Exchange 2000 en opzetten van een server voor wereldwijde uitwisseling van projectinformatie Bertels David 3ICT1 Stageplaats: Acros Organics.
Downloaden: Ad-aware. Downloaden bestaat uit 3 delen: •1. Zoeken naar de plek waar je het bestand kan vinden op het internet •2. Het nemen van een kopie.

Global e-Society Complex België - Regio Vlaanderen e-Regio Provincie Limburg Stad Hasselt Percelen.
1 Wat is microfinanciering ? 2 1. De financiële behoefte.
 Deel 1: Introductie / presentatie  DVD  Presentatie enquête  Ervaringen gemeente  Pauze  Deel 2 Discussie in kleinere groepen  Discussies in lokalen.
Hoofdstuk 8: Recursie.
Ronde (Sport & Spel) Quiz Night !
prNBN D addendum 1 Deel 2: PLT
Van Nul naar Drie Normaliseren.
1 SOCS Hoofdstuk 1 Computerarchitectuur. 2 Overzicht Eenvoudig C Arrays  Klassiek gebruik  For opdracht, Increment/Decrement  Wijzers, Arrays en Wijzers.
Diagnosticeer uw schouder Dit is een interactieve gids om u te helpen vinden relevante patiënten informatie over uw schouderprobleem. Het is bedoeld als.
Datastructuren Analyse van Algoritmen en O
Naar het Jaareinde toe
Excursie Röntgenafdeling Vie Curi Venlo 15 september 2009 ZijActief Koningslust ZijActief Koningslust Excursie Rontgenafdeling Vie Curie Venlo.
© GfK 2012 | Title of presentation | DD. Month
WISKUNDIGE FORMULES.

MEDIALANDSCHAP We onderscheiden: Visuele media Auditieve media
1 SOCS Hoofdstuk 3 Basisprogrammatuur. 2 Inhoud De Vertaler De Voorvertaler De Lader De Binder De Vertolker Het Speurprogramma Het Opstarten van de Computer.
1 SOCS Hoofdstuk 1 Programmeertaal C. 2 Kenmerken van C Hogere programmeertaal  Grote verzameling types, strenge type controle  Zelf nieuwe types definiëren.
1 SOCS Hoofdstuk 3 Basisprogrammatuur. 2 Inhoud De Vertaler De Voorvertaler De Lader De Binder De Vertolker  Werking van vertolker  Voor- en nadelen.
1 SOCS Hoofdstuk 3 Basisprogrammatuur. 2 Inhoud De Vertaler De Voorvertaler De Lader De Binder De Vertolker Het Speurprogramma Het Opstarten van de Computer.
Hoofdstuk 3 Basisprogrammatuur
1 SOCS Hoofdstuk 3 Basisprogrammatuur. 2 Inhoud De Vertaler De Voorvertaler  Enkel MACRO en MCREINDE directieven  Extra macro-directieven De Lader De.
Wat levert de tweede pensioenpijler op voor het personeelslid? 1 Enkele simulaties op basis van de weddeschaal B1-B3.
Bewegen Hoofdstuk 3 Beweging Ing. J. van de Worp.
Bewegen Hoofdstuk 3 Beweging Ing. J. van de Worp.
In dit vakje zie je hoeveel je moet betalen. Uit de volgende drie vakjes kan je dan kiezen. Er is er telkens maar eentje juist. Ken je het juiste antwoord,
Onderwijsconferentie
Inleiding programmeren in C++ Life Science & Technology 2 februari Universiteit Leiden.
Inleiding programmeren in C++ Life Science & Technology 9 februari Universiteit Leiden.
Werken aan Intergenerationele Samenwerking en Expertise.
De vierkantjes ! Dit is een puzzel om uw hersens eens goed te laten werken. De vraag is bij elk figuur hoeveel vierkanten u ziet.
Breuken-Vereenvoudigen
2009 Tevredenheidsenquête Resultaten Opleidingsinstellingen.
Hoe werkt een rekenmachine?
1Ben Bruidegom 1 De Harvard Machine Van rekenmachine met “loopjes” naar processor.
PLAYBOY Kalender 2006 Dit is wat mannen boeit!.
Het Heiligdom Een Afbeelding voor Redding 4e Kwartaal 2013 INLEIDING
Chronologie van maatregelen tegen de joden in het Derde rijk
P. 1 Vakgroep Informatietechnologie Scanf voorbeeld #include int main(void) { int i=-1,j=-1,k=-1,l=-1; int b; b=scanf("%d %d %d %d",&i,&j,&k,&l); printf("res=%d.
Vakgroep Informatietechnologie – SoftwareOntwikkeling 1 SoftwareOntwikkeling 1 Conditionele compilatie in C met de macropreprocessor.
 Doel  Doelgroep  Aanloop  Userstudy  Resultaten  Ervaringen van de gebruiker  Besluit 1.
ZijActief Koningslust 10 jaar Truusje Trap
Voorrangsregels bij rekenen (1)
ECHT ONGELOOFLIJK. Lees alle getallen. langzaam en rij voor rij
2 januari 2009Nieuwjaarsreceptie "Meule wal straete" 1 Nieuwjaarsreceptie 2 januari 2009 Eerste bijeenkomst van de bewoners van de “Meule wal straete”
Hartelijk welkom bij de Nederlandse Bridge Academie
Voorlichting fysieke belasting
Voorlichting fysieke belasting
17/08/2014 | pag. 1 Fractale en Wavelet Beeldcompressie Les 3.
Fractale en Wavelet Beeldcompressie
De financiële functie: Integrale bedrijfsanalyse©
13 juni 2013 Bodegraven vanaf hoofdstuk 7:1 1. 1Korinthe 7 1 Wat nu de punten betreft, waarover gij mij geschreven hebt, het is goed voor een mens niet.
De vierkantjes ! Dit is een puzzel om uw hersens eens goed te laten werken. De vraag is bij elk figuur hoeveel vierkanten u ziet.
1 Zie ook identiteit.pdf willen denkenvoelen 5 Zie ook identiteit.pdf.
Strijd tegen de zonde?.
ZijActief Koningslust
* Volgende dia: Klik linker muisknop Klik op "Beeld" \ "Diavoorstelling" of "View" \ "Slide Show" (menubalk PowerPoint) © Alec Van Rompuy
1 XSLT processing & control Datamodellering 2006.
PEMSY1http:// 1  Herhaling nieuwe instructies van vorige week  nieuw: combineren van assembler en C  oefeningen: assembler.
SOCS Test 1.
Transcript van de presentatie:

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