De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

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

Verwante presentaties


Presentatie over: "1 SOCS Hoofdstuk 1 Computerarchitectuur. 2 Overzicht Eenvoudig C Arrays Functies Records Dynamische gegevenstructuren Macro’s C."— Transcript van de presentatie:

1 1 SOCS Hoofdstuk 1 Computerarchitectuur

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

3 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 55 Cursustekst Hoofdstuk 1: pag. 165  einde


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

Verwante presentaties


Ads door Google