Toets 1
5 november 2019
Vraag 1.i
#instr #L #S R0 Stapel
1 1
1 1 0
1 1 1 [0]
1 2 1
4 5 1 1 [0]
0: SPR MAIN 1: STP
2: MAIN: HIA.w R0,0 3: BST R0
4: SPR.i IND(R0+) 5: HST R0
6: SPR MAIN 7: IND: 4
8: 3
9: 1
10: 0
[1,2,3]
Top
BT 4
Vraag 1.i
#instr #L #S R0 Stapel
4 5 1 1 [0]
1 2 2 [0]
5 7 1 2 [0]
0: SPR MAIN 1: STP
2: MAIN: HIA.w R0,0 3: BST R0
4: SPR.i IND(R0+) 5: HST R0
6: SPR MAIN 7: IND: 4
8: 3
9: 1
10: 0
[1,2,3]
Top
BT 3
Vraag 1.i
#instr #L #S R0 Stapel
5 7 1 2 [0]
1 1 1 [2,0]
1 2 3
7 10 2 3 [2,0]
0: SPR MAIN 1: STP
2: MAIN: HIA.w R0,0 3: BST R0
4: SPR.i IND(R0+) 5: HST R0
6: SPR MAIN 7: IND: 4
8: 3
9: 1
10: 0
[1,2,3]
Top
BT 1
Vraag 1.i
#instr #L #S R0 Stapel
7 10 2 3 [2,0]
1 1
8 11 2 2
0 0: SPR MAIN
1: STP
2: MAIN: HIA.w R0,0 3: BST R0
4: SPR.i IND(R0+) 5: HST R0
6: SPR MAIN 7: IND: 4
8: 3
9: 1
10: 0
[1,2,3]
Top
Vraag 1.ii
HST R0
BIGR1,200(-R2)
AFT.i R3,203(R4+) BIGR0,0(R9)
0000000202 0000000201 0000000200
1000 1001 1002
0000000103 0000000102 0000000101 0000000100
0200 0201 0202 0203 0204 0205
0000000205 0000001002 0000001001 0000001000
0100 0101 0102 0103
0000001003
9876543210 0000000002 0000001002 R0
R1 R2 R3 R4 R9
0000000000
0000000204 0000000300
0000000400 0123456789
8997 8998 8999 9000
0000000200 9999999999
0000008998 0000000300
0000008999 0000000001
9876543210
0000000000 0000000001
0000000300
Vraag 1.iii
/* Gelineariseerd */
int R[………]; // rij-lin.
int K[………]; // kolom-lin.
int s,t;
void main() { ...
int a = …;
int b = …;
R[a] = K[b];
/* Niet gelineariseerd */
int r[20][40];
int k[60][20];
int x,y;
void main() { ...
r[s-2*t][84*t-40*s-200] =
k[10*t-60*s-100][s+5]; ...
800 1200
40*(s – 2*t) + (84*t – 40*s – 200)
= 4*t – 200
60*(s + 5) + (10*t – 60*s – 100)
= 10*t + 200
0 ≤ a < 800
0 ≤ 4*t – 200 < 800 50 ≤ t < 250
0 ≤ b < 1200
0 ≤ 10*t + 200 < 1200 -20 ≤ t < 100
50 ≤ t < 100
Vraag 2
struct punt bezocht[10];
main () {
int i;
register int j;
struct punt loc;
int klasse[3];
...
i = loc.info;
bezocht[2].y_co =
vind(klasse, &klasse[i], &loc);
...
}
int vind(int kl[],
register int *inf, struct punt * wzr) {
struct punt tdl;
register int k;
...
if (wzr->info != *inf) return (k-1);
else
return vind(kl,
&(wzr->y_co), &tdl) + *inf;
} struct punt {
int x_co;
int y_co;
int info;
};
Vraag 2
2. Toewijzingstabel
vind
Par Adres kl
inf wzr
Var Adres tdl
k RES TKA
Vorige R8 R8
In registers:
• Par:
• var:
par. kl inf k
1. Teken AR
par. wzr
tdl.info
Kopie R6
2(R8) R1
R6 R0 - 4(R8)
1(R8)
int vind(int kl[],
register int *inf, struct punt * wzr) {
struct punt tdl;
register int k;
...
if (wzr->info != *inf) return (k-1);
else
return vind(kl,
&(wzr->y_co), &tdl) + *inf;
}
tdl.y_co
var tdl.y_co
Vraag 2
3. Oproeprooster
vind
Par Adres kl
inf wzr
Var Adres tdl
k RES
2(R8) R1
R6 R0 - 4(R8)
1(R8)
R0-2?
Res?
formeel actueel hoe
kl inf wzr
R0 R1
kl
&tdl
stapel R1
stapel
int vind(int kl[],
register int *inf, struct punt * wzr) {
struct punt tdl;
register int k;
...
if (wzr->info != *inf) return (k-1);
else
return vind(kl,
&(wzr->y_co), &tdl) + *inf;
}
&(wzr->y_co)
R1 gebruik (par. ‘inf’)
Vraag 2
struct punt bezocht[10];
main () {
int i;
register int j;
struct punt loc;
int klasse[3];
...
i = loc.info;
bezocht[2].y_co = vind(klasse,
&klasse[i], &loc);
...
}
struct punt { int x_co;
int y_co;
int info;
};
main
Var Adres i
j loc klasse
Glob var Label
bezocht BEZOCHT
R6 - 2(R8) In registers:
• var: j
1. Teken AR
var. i
TKA = -1 R8 = -1 R8
loc.info
loc.y_co
var
loc.x_co
k
lasse[2]
klasse [1]
- 5(R8) - 8(R8)
2. Toewijzingstabel
v.
klasse[0]
Vraag 2
struct punt bezocht[10];
main () {
int i;
register int j;
struct punt loc;
int klasse[3];
...
i = loc.info;
bezocht[2].y_co = vind(klasse,
&klasse[i], &loc);
...
}
struct punt { int x_co;
int y_co;
int info;
};
3. Oproeprooster
R0-2?
Res?
Form. actueel hoe kl
inf wzr
R0 -
klasse
&klasse[i]
&loc
stapel R1
stapel
vind
Par Adres kl
inf wzr
Var Adres tdl
k RES
2(R8) R1
R6 R0 - 4(R8)
1(R8)
main
Var Adres i
j loc klasse
R6 - 2(R8)
- 5(R8) - 8(R8)
Geen R0, R1, R2 in gebruik
Vraag 2
4. Vertaling
Huistaak!
Vraag 2
var. i
TKA = -1 R8 = -1
loc.info
loc.y_co
var. loc.x_co
klasse[2]
klasse[1]
TKA
Vorige R8
par. kl
par. wzr
tdl.info
R8
A R( m ain )
AR (vin d)
5. Volledige stapel
var. klasse[0]
SBR vind TKA_MAIN: HST R8
R0-2?
Res?
Form. actueel hoe kl
inf wzr
R0 -
klasse
&klasse[i]
&loc
stapel R1
stapel
= &loc
= klasse
= TKA_MAIN
Kopie R6
var. tdl.x_co
tdl.y_co
Vraag 2
var. i
TKA = -1 R8 = -1
loc.info
loc.y_co
var. loc.x_co
klasse[2]
klasse[1]
TKA = TKA_MAIN Vorige R8
par. kl = klasse
par. wzr = &loc tdl.info
TKA =
Vorige R8
par. kl =
par. wzr =
tdl.info Kopie R6
AR (vin d)
&tdl kl TKA_VIND
R8 R9
A R( m ain )
AR (vin d)
5. Volledige stapel
Kopie R6
Kopie R1 = &klasse[i]
var. klasse[0]
var. tdl.x_co tdl.y_co
var. tdl.x_co tdl.y_co
SBR vind TKA_VIND: HST R8
R0-2?
Res?
formeel actueel hoe
kl
inf … wzr
R0 R1
kl
&tdl
stapel R1
stapel
Vraag 2
var. i
TKA = -1 R8 = -1
loc.info
loc.y_co
var. loc.x_co
klasse[2]
klasse[1]
TKA = TKA_MAIN Vorige R8
par. kl = klasse
par. wzr = &loc tdl.info
TKA =
Vorige R8
par. kl =
par. wzr =
tdl.info Kopie R6
AR (vin d)
&tdl kl TKA_VIND
R8 R9
A R( m ain )
AR (vin d)
5. Volledige stapel
Kopie R6
Kopie R1 = &klasse[i]