1 SOCS Hoofdstuk 1 Computerarchitectuur. 2 Overzicht Eenvoudig C Arrays Klassiek gebruik For...

41
1 SOCS Hoofdstuk 1 Computerarchitect uur

Transcript of 1 SOCS Hoofdstuk 1 Computerarchitectuur. 2 Overzicht Eenvoudig C Arrays Klassiek gebruik For...

Page 1: 1 SOCS Hoofdstuk 1 Computerarchitectuur. 2 Overzicht Eenvoudig C Arrays  Klassiek gebruik  For opdracht, Increment/Decrement  Wijzers, Arrays en Wijzers.

1

SOCS

Hoofdstuk 1

Computerarchitectuur

Page 2: 1 SOCS Hoofdstuk 1 Computerarchitectuur. 2 Overzicht Eenvoudig C Arrays  Klassiek gebruik  For opdracht, Increment/Decrement  Wijzers, Arrays en Wijzers.

2

Overzicht

Eenvoudig C Arrays

Klassiek gebruik For opdracht, Increment/Decrement Wijzers, Arrays en Wijzers Array van Wijzers Meerdimensionale Tabellen Wijzer naar Array

Functies Records Dynamische gegevenstructuren

CC

Page 3: 1 SOCS Hoofdstuk 1 Computerarchitectuur. 2 Overzicht Eenvoudig C Arrays  Klassiek gebruik  For opdracht, Increment/Decrement  Wijzers, Arrays en Wijzers.

3

Meerdimensionale tabellen

int t[5][5], i, k;main() {

/* initialiseren van tabel*/.../* spiegelen om diagonaal*/for(i=0; i<5; i++)

for(k=i+1; k<5; k++) {h = t[i][k];t[i][k] = t[k][i];t[k][i] = h;

}/*afdrukken resultaat*/...

}

CC

t

t[0][1]t[0][1]

t[1][1]t[1][1]

t[2][1]t[2][1]

t[3][1]t[3][1]

t[4][1]t[4][1]

t[0][2]t[0][2]

t[1][2]t[1][2]

t[2][2]t[2][2]

t[3][2]t[3][2]

t[4][2]t[4][2]

t[0][3]t[0][3]

t[1][3]t[1][3]

t[2][3]t[2][3]

t[3][3]t[3][3]

t[4][3]t[4][3]

t[0][0]t[0][0]

t[1][0]t[1][0]

t[2][0]t[2][0]

t[3][0]t[3][0]

t[4][0]t[4][0]

t[0][4]t[0][4]

t[1][4]t[1][4]

t[2][4]t[2][4]

t[3][4]t[3][4]

t[4][4]t[4][4]

t[0]t[0]

t[1]t[1]

t[2]t[2]

t[3]t[3]

t[4]t[4]

Rij waarvan de elementen opnieuw rijen zijn

Page 4: 1 SOCS Hoofdstuk 1 Computerarchitectuur. 2 Overzicht Eenvoudig C Arrays  Klassiek gebruik  For opdracht, Increment/Decrement  Wijzers, Arrays en Wijzers.

4

Meerdimensionale tabellen

int t[5][5], i, k;main() {

/* initialiseren van tabel*/.../* spiegelen om diagonaal*/for(i=0; i<5; i++)

for(k=i+1; k<5; k++) {h = t[i][k];t[i][k] = t[k][i];t[k][i] = h;

}/*afdrukken resultaat*/...

}

CC

t

22

77

1212

1717

2222

33

88

1313

1818

2323

44

99

1414

1919

2424

11

66

1111

1616

2121

55

1010

1515

2020

2525

t[0]t[0]

t[1]t[1]

t[2]t[2]

t[3]t[3]

t[4]t[4]

00 11 22 33 44

Page 5: 1 SOCS Hoofdstuk 1 Computerarchitectuur. 2 Overzicht Eenvoudig C Arrays  Klassiek gebruik  For opdracht, Increment/Decrement  Wijzers, Arrays en Wijzers.

5

Meerdimensionale tabellen

int t[5][5], i, k;main() {

/* initialiseren van tabel*/.../* spiegelen om diagonaal*/for(i=0; i<5; i++)

for(k=i+1; k<5; k++) {h = t[i][k];t[i][k] = t[k][i];t[k][i] = h;

}/*afdrukken resultaat*/...

}

CC

t

22

77

1212

1717

2222

33

88

1313

1818

2323

44

99

1414

1919

2424

11

66

1111

1616

2121

55

1010

1515

2020

2525

t[0]t[0]

t[1]t[1]

t[2]t[2]

t[3]t[3]

t[4]t[4]

66

22

i = 0 k = 1

00 11 22 33 44

Page 6: 1 SOCS Hoofdstuk 1 Computerarchitectuur. 2 Overzicht Eenvoudig C Arrays  Klassiek gebruik  For opdracht, Increment/Decrement  Wijzers, Arrays en Wijzers.

6

Meerdimensionale tabellen

int t[5][5], i, k;main() {

/* initialiseren van tabel*/.../* spiegelen om diagonaal*/for(i=0; i<5; i++)

for(k=i+1; k<5; k++) {h = t[i][k];t[i][k] = t[k][i];t[k][i] = h;

}/*afdrukken resultaat*/...

}

CC

t

22

77

1212

1717

2222

33

88

1313

1818

2323

44

99

1414

1919

2424

11

66

1111

1616

2121

55

1010

1515

2020

2525

t[0]t[0]

t[1]t[1]

t[2]t[2]

t[3]t[3]

t[4]t[4]

66

22

1111

33

i = 0 k = 2

00 11 22 33 44

Page 7: 1 SOCS Hoofdstuk 1 Computerarchitectuur. 2 Overzicht Eenvoudig C Arrays  Klassiek gebruik  For opdracht, Increment/Decrement  Wijzers, Arrays en Wijzers.

7

Meerdimensionale tabellen

int t[5][5], i, k;main() {

/* initialiseren van tabel*/.../* spiegelen om diagonaal*/for(i=0; i<5; i++)

for(k=i+1; k<5; k++) {h = t[i][k];t[i][k] = t[k][i];t[k][i] = h;

}/*afdrukken resultaat*/...

}

CC

t

22

77

1212

1717

2222

33

88

1313

1818

2323

44

99

1414

1919

2424

11

66

1111

1616

2121

55

1010

1515

2020

2525

t[0]t[0]

t[1]t[1]

t[2]t[2]

t[3]t[3]

t[4]t[4]

66

22

1111

33

1616

44

i = 0 k = 3

00 11 22 33 44

Page 8: 1 SOCS Hoofdstuk 1 Computerarchitectuur. 2 Overzicht Eenvoudig C Arrays  Klassiek gebruik  For opdracht, Increment/Decrement  Wijzers, Arrays en Wijzers.

8

Meerdimensionale tabellen

int t[5][5], i, k;main() {

/* initialiseren van tabel*/.../* spiegelen om diagonaal*/for(i=0; i<5; i++)

for(k=i+1; k<5; k++) {h = t[i][k];t[i][k] = t[k][i];t[k][i] = h;

}/*afdrukken resultaat*/...

}

CC

t

22

77

1212

1717

2222

33

88

1313

1818

2323

44

99

1414

1919

2424

11

66

1111

1616

2121

55

1010

1515

2020

2525

t[0]t[0]

t[1]t[1]

t[2]t[2]

t[3]t[3]

t[4]t[4]

66

22

1111

33

1616

44

2121

55

i = 0 k = 4

00 11 22 33 44

Page 9: 1 SOCS Hoofdstuk 1 Computerarchitectuur. 2 Overzicht Eenvoudig C Arrays  Klassiek gebruik  For opdracht, Increment/Decrement  Wijzers, Arrays en Wijzers.

9

Meerdimensionale tabellen

int t[5][5], i, k;main() {

/* initialiseren van tabel*/.../* spiegelen om diagonaal*/for(i=0; i<5; i++)

for(k=i+1; k<5; k++) {h = t[i][k];t[i][k] = t[k][i];t[k][i] = h;

}/*afdrukken resultaat*/...

}

CC

t

22

77

1212

1717

2222

33

88

1313

1818

2323

44

99

1414

1919

2424

11

66

1111

1616

2121

55

1010

1515

2020

2525

t[0]t[0]

t[1]t[1]

t[2]t[2]

t[3]t[3]

t[4]t[4]

66

22

1111

33

1616

44

2121

55

1212

88

i = 1 k = 2

00 11 22 33 44

Page 10: 1 SOCS Hoofdstuk 1 Computerarchitectuur. 2 Overzicht Eenvoudig C Arrays  Klassiek gebruik  For opdracht, Increment/Decrement  Wijzers, Arrays en Wijzers.

10

Meerdimensionale tabellen

int t[5][5], i, k;main() {

/* initialiseren van tabel*/.../* spiegelen om diagonaal*/for(i=0; i<5; i++)

for(k=i+1; k<5; k++) {h = t[i][k];t[i][k] = t[k][i];t[k][i] = h;

}/*afdrukken resultaat*/...

}

CC

t

22

77

1212

1717

2222

33

88

1313

1818

2323

44

99

1414

1919

2424

11

66

1111

1616

2121

55

1010

1515

2020

2525

t[0]t[0]

t[1]t[1]

t[2]t[2]

t[3]t[3]

t[4]t[4]

66

22

1111

33

1616

44

2121

55

1212

88

1717

99

i = 1 k = 3

00 11 22 33 44

Page 11: 1 SOCS Hoofdstuk 1 Computerarchitectuur. 2 Overzicht Eenvoudig C Arrays  Klassiek gebruik  For opdracht, Increment/Decrement  Wijzers, Arrays en Wijzers.

11

Meerdimensionale tabellen

int t[5][5], i, k;main() {

/* initialiseren van tabel*/.../* spiegelen om diagonaal*/for(i=0; i<5; i++)

for(k=i+1; k<5; k++) {h = t[i][k];t[i][k] = t[k][i];t[k][i] = h;

}/*afdrukken resultaat*/...

}

CC

t

22

77

1212

1717

2222

33

88

1313

1818

2323

44

99

1414

1919

2424

11

66

1111

1616

2121

55

1010

1515

2020

2525

t[0]t[0]

t[1]t[1]

t[2]t[2]

t[3]t[3]

t[4]t[4]

66

22

1111

33

1616

44

2121

55

1212

88

1717

99

2222

1010

i = 1 k = 4

00 11 22 33 44

Page 12: 1 SOCS Hoofdstuk 1 Computerarchitectuur. 2 Overzicht Eenvoudig C Arrays  Klassiek gebruik  For opdracht, Increment/Decrement  Wijzers, Arrays en Wijzers.

12

Meerdimensionale tabellen

int t[5][5], i, k;main() {

/* initialiseren van tabel*/.../* spiegelen om diagonaal*/for(i=0; i<5; i++)

for(k=i+1; k<5; k++) {h = t[i][k];t[i][k] = t[k][i];t[k][i] = h;

}/*afdrukken resultaat*/...

}

CC

t

22

77

1212

1717

2222

33

88

1313

1818

2323

44

99

1414

1919

2424

11

66

1111

1616

2121

55

1010

1515

2020

2525

t[0]t[0]

t[1]t[1]

t[2]t[2]

t[3]t[3]

t[4]t[4]

66

22

1111

33

1616

44

2121

55

1212

88

1717

99

2222

1010

1818

1414

i = 2 k = 3

00 11 22 33 44

Page 13: 1 SOCS Hoofdstuk 1 Computerarchitectuur. 2 Overzicht Eenvoudig C Arrays  Klassiek gebruik  For opdracht, Increment/Decrement  Wijzers, Arrays en Wijzers.

13

Meerdimensionale tabellen

int t[5][5], i, k;main() {

/* initialiseren van tabel*/.../* spiegelen om diagonaal*/for(i=0; i<5; i++)

for(k=i+1; k<5; k++) {h = t[i][k];t[i][k] = t[k][i];t[k][i] = h;

}/*afdrukken resultaat*/...

}

CC

t

22

77

1212

1717

2222

33

88

1313

1818

2323

44

99

1414

1919

2424

11

66

1111

1616

2121

55

1010

1515

2020

2525

t[0]t[0]

t[1]t[1]

t[2]t[2]

t[3]t[3]

t[4]t[4]

66

22

1111

33

1616

44

2121

55

1212

88

1717

99

2222

1010

1818

1414

2323

1515

i = 2 k = 4

00 11 22 33 44

Page 14: 1 SOCS Hoofdstuk 1 Computerarchitectuur. 2 Overzicht Eenvoudig C Arrays  Klassiek gebruik  For opdracht, Increment/Decrement  Wijzers, Arrays en Wijzers.

14

Meerdimensionale tabellen

int t[5][5], i, k;main() {

/* initialiseren van tabel*/.../* spiegelen om diagonaal*/for(i=0; i<5; i++)

for(k=i+1; k<5; k++) {h = t[i][k];t[i][k] = t[k][i];t[k][i] = h;

}/*afdrukken resultaat*/...

}

CC

t

22

77

1212

1717

2222

33

88

1313

1818

2323

44

99

1414

1919

2424

11

66

1111

1616

2121

55

1010

1515

2020

2525

t[0]t[0]

t[1]t[1]

t[2]t[2]

t[3]t[3]

t[4]t[4]

66

22

1111

33

1616

44

2121

55

1212

88

1717

99

2222

1010

1818

1414

2323

1515

2424

2020

i = 3 k = 4

00 11 22 33 44

Page 15: 1 SOCS Hoofdstuk 1 Computerarchitectuur. 2 Overzicht Eenvoudig C Arrays  Klassiek gebruik  For opdracht, Increment/Decrement  Wijzers, Arrays en Wijzers.

15

Wijzer naar Array

int t[5][5];

int (*wa)[5], *wi;

main() {

...

wa = &t[0];

wi = &t[0][0];

wi++;

wa++;

...

}

CC

wa

t

22

77

1212

1717

2222

33

88

1313

1818

2323

44

99

1414

1919

2424

11

66

1111

1616

2121

55

1010

1515

2020

2525

t[0]t[0]

t[1]t[1]

t[2]t[2]

t[3]t[3]

t[4]t[4]

wi

Wijzer naar rij van 5 elementen

Page 16: 1 SOCS Hoofdstuk 1 Computerarchitectuur. 2 Overzicht Eenvoudig C Arrays  Klassiek gebruik  For opdracht, Increment/Decrement  Wijzers, Arrays en Wijzers.

16

Wijzer naar Array

int t[5][5];

int (*wa)[5], *wi;

main() {

...

wa = &t[0];

wi = &t[0][0];

wi++;

wa++;

...

}

CC

wa

t

22

77

1212

1717

2222

33

88

1313

1818

2323

44

99

1414

1919

2424

11

66

1111

1616

2121

55

1010

1515

2020

2525

t[0]t[0]

t[1]t[1]

t[2]t[2]

t[3]t[3]

t[4]t[4]

wi

Page 17: 1 SOCS Hoofdstuk 1 Computerarchitectuur. 2 Overzicht Eenvoudig C Arrays  Klassiek gebruik  For opdracht, Increment/Decrement  Wijzers, Arrays en Wijzers.

17

Wijzer naar Array

int t[5][5];

int (*wa)[5], *wi;

main() {

...

wa = &t[0];

wi = &t[0][0];

wi++;

wa++;

...

}

CC

wa

t

22

77

1212

1717

2222

33

88

1313

1818

2323

44

99

1414

1919

2424

11

66

1111

1616

2121

55

1010

1515

2020

2525

t[0]t[0]

t[1]t[1]

t[2]t[2]

t[3]t[3]

t[4]t[4]

wi

Page 18: 1 SOCS Hoofdstuk 1 Computerarchitectuur. 2 Overzicht Eenvoudig C Arrays  Klassiek gebruik  For opdracht, Increment/Decrement  Wijzers, Arrays en Wijzers.

18

Wijzer naar Array

int t[5][5];

int (*wa)[5], *wi;

main() {

...

wa = &t[0];

wi = &t[0][0];

wi++;

wa++;

...

}

CC

wa

t

22

77

1212

1717

2222

33

88

1313

1818

2323

44

99

1414

1919

2424

11

66

1111

1616

2121

55

1010

1515

2020

2525

t[0]t[0]

t[1]t[1]

t[2]t[2]

t[3]t[3]

t[4]t[4]

wi

Page 19: 1 SOCS Hoofdstuk 1 Computerarchitectuur. 2 Overzicht Eenvoudig C Arrays  Klassiek gebruik  For opdracht, Increment/Decrement  Wijzers, Arrays en Wijzers.

19

Wijzer naar Array

int t[5][5];

int (*wa)[5], *wi;

main() {

...

wa = &t[0];

wi = &t[0][0];

wi++;

wa++;

...

}

CC

wa

t

22

77

1212

1717

2222

33

88

1313

1818

2323

44

99

1414

1919

2424

11

66

1111

1616

2121

55

1010

1515

2020

2525

t[0]t[0]

t[1]t[1]

t[2]t[2]

t[3]t[3]

t[4]t[4]

wi

Page 20: 1 SOCS Hoofdstuk 1 Computerarchitectuur. 2 Overzicht Eenvoudig C Arrays  Klassiek gebruik  For opdracht, Increment/Decrement  Wijzers, Arrays en Wijzers.

20

Meerdimensionale Tabellen

Geen nieuwe bevelen nodig Afbeelden van meerdimensionale structuur

1-dimensionale werkgeheugen = Linearisatie

Gebeurt op het C-programma Transformatie van de code ~

alleen 1-dimensionale tabellen

Page 21: 1 SOCS Hoofdstuk 1 Computerarchitectuur. 2 Overzicht Eenvoudig C Arrays  Klassiek gebruik  For opdracht, Increment/Decrement  Wijzers, Arrays en Wijzers.

21

Meerdimensionale Tabellen

Rij-linearisatie Matrix wordt rij

per rij bewaard

aa1111

aa1212

aa1m1m

aa2121

aa2222

aa2m2m

aan1n1

aan2n2

aanmnm

A0

A1

Am-1

Am

Am+1

A2m-1

A(n-1)m

A(n-1)m+1

Anm-1

a[i][j] = A[k]

k = (i-1)*m + (j-1)

aa1111 aa1212 aa1m1m

aa2121 aa2222 aa2m2m

aan1n1 aan2n2 aanmnm

…………

……

……

Page 22: 1 SOCS Hoofdstuk 1 Computerarchitectuur. 2 Overzicht Eenvoudig C Arrays  Klassiek gebruik  For opdracht, Increment/Decrement  Wijzers, Arrays en Wijzers.

22

Meerdimensionale Tabellen

Kolom-linearisatie Matrix wordt kolom

per kolom bewaard

aa1111

aa2121

aan1n1

aa1212

aa2222

aan2n2

aa1m1m

aa2m2m

aanmnm

A0

A1

An-1

An

An+1

A2n-1

A(m-1)n

A(m-1)n+1

Amn-1

a[i][j] = A[k]

k =

aa1111 aa1212 aa1m1m

aa2121 aa2222 aa2m2m

aan1n1 aan2n2 aanmnm

…………

……

……(j-1)*n + (i-1)

Page 23: 1 SOCS Hoofdstuk 1 Computerarchitectuur. 2 Overzicht Eenvoudig C Arrays  Klassiek gebruik  For opdracht, Increment/Decrement  Wijzers, Arrays en Wijzers.

23

Meerdimensionale Tabellen

Rij-linearisatie Kolom-linearisatie

a[i][j] = A[k]

k =

aa0,00,0 aa0,20,2 aa0,m-10,m-1

aa1,01,0 aa1,21,2 aa1,m-11,m-1

aan-1,0n-1,0 aan-1,1n-1,1 aan-1,m-1n-1,m-1

aa0,00,0 aa0,20,2 aa0,m-10,m-1

aa1,01,0 aa1.21.2 aa1,m-11,m-1

aan-1,0n-1,0 aan-1,1n-1,1 aan-1,m-1n-1,m-1

a[i][j] = A[k]

k = i*m + j j*n + i

Page 24: 1 SOCS Hoofdstuk 1 Computerarchitectuur. 2 Overzicht Eenvoudig C Arrays  Klassiek gebruik  For opdracht, Increment/Decrement  Wijzers, Arrays en Wijzers.

24

Meerdimensionale tabellen

int a[5][4], i, j;

main() {

/* inlezen van tabel*/

for(i=4; i>=0; i--)

for(j=3; j>=0; j--)

a[i][j] = getint();

...

}

int A[5*4], i, j, k;

main() {

/* inlezen van tabel*/

for(i=4; i>=0; i--)

for(j=3; j>=0; j--) {

k = i * 4 + j;

A[k] = getint();

}

...

}

CC

Page 25: 1 SOCS Hoofdstuk 1 Computerarchitectuur. 2 Overzicht Eenvoudig C Arrays  Klassiek gebruik  For opdracht, Increment/Decrement  Wijzers, Arrays en Wijzers.

25

Meerdimensionale tabellen

int A[5*4], i, j, k, h;

main() {

/* inlezen van tabel*/

for(i=4; i>=0; i--) {

h = 4 * i;

for(j=3; j>=0; j--) {

k = h + j;

A[k] = getint();

}

}

...

}

int A[5*4], i, j, k;

main() {

/* inlezen van tabel*/

for(i=4; i>=0; i--)

for(j=3; j>=0; j--) {

k = i * 4 + j;

A[k] = getint();

}

...

}

CC

Page 26: 1 SOCS Hoofdstuk 1 Computerarchitectuur. 2 Overzicht Eenvoudig C Arrays  Klassiek gebruik  For opdracht, Increment/Decrement  Wijzers, Arrays en Wijzers.

26

Meerdimensionale tabellen

int A[5*4], i, j, k, h;

main() {

/* inlezen van tabel*/

for(i=4; i>=0; i--) {

h = 4 * i;

for(j=3; j>=0; j--) {

k = h + j;

A[k] = getint();

}

}

...

}

int A[5*4], i, j, k, h;main() {

/* inlezen van tabel*/h = 16;for(i=4; i>=0; i--) {

for(j=3; j>=0; j--) {k = h + j;A[k] = getint();

}h -= 4;

}...

}

CC

Page 27: 1 SOCS Hoofdstuk 1 Computerarchitectuur. 2 Overzicht Eenvoudig C Arrays  Klassiek gebruik  For opdracht, Increment/Decrement  Wijzers, Arrays en Wijzers.

27

Meerdimensionale tabellen

int A[5*4], i, j, k, h;main() {

/* inlezen van tabel*/h = 16;for(i=4; i>=0; i--) {

k = h + 3;for(j=3; j>=0; j--) {

A[k--] = getint();}h -= 4;

}...

}

int A[5*4], i, j, k, h;main() {

/* inlezen van tabel*/h = 16;for(i=4; i>=0; i--) {

for(j=3; j>=0; j--) {k = h + j;A[k] = getint();

}h -= 4;

}...

}

CC

Page 28: 1 SOCS Hoofdstuk 1 Computerarchitectuur. 2 Overzicht Eenvoudig C Arrays  Klassiek gebruik  For opdracht, Increment/Decrement  Wijzers, Arrays en Wijzers.

28

Meerdimensionale tabellen

int A[5*4], i, j, k, h;main() {

/* inlezen van tabel*/h = 16;for(i=4; i>=0; i--) {

k = h + 3;for(j=3; j>=0; j--) {

A[k--] = getint();}h -= 4;

}...

}

int A[5*4], i, j, k;

main() {

/* inlezen van tabel*/

k = 19;

for(i=4; i>=0; i--) {

for(j=3; j>=0; j--) {

A[k--] = getint();

}

}

...

}

CC

Page 29: 1 SOCS Hoofdstuk 1 Computerarchitectuur. 2 Overzicht Eenvoudig C Arrays  Klassiek gebruik  For opdracht, Increment/Decrement  Wijzers, Arrays en Wijzers.

29

Meerdimensionale Tabellen

int A[5*4], i, j, k;

main() {

/* inlezen van tabel*/

k = 19;

for(i=4; i>=0; i--) {

for(j=3; j>=0; j--) {

A[k--] = getint();

}

}

}

| i R1, j R2, k R3

Page 30: 1 SOCS Hoofdstuk 1 Computerarchitectuur. 2 Overzicht Eenvoudig C Arrays  Klassiek gebruik  For opdracht, Increment/Decrement  Wijzers, Arrays en Wijzers.

30

Meerdimensionale Tabellen

int A[5*4], i, j, k;

main() {

/* inlezen van tabel*/

k = 19;

for(i=4; i>=0; i--) {

for(j=3; j>=0; j--) {

A[k--] = getint();

}

}

}

| i R1, j R2, k R3

HIA.w R3,19

Page 31: 1 SOCS Hoofdstuk 1 Computerarchitectuur. 2 Overzicht Eenvoudig C Arrays  Klassiek gebruik  For opdracht, Increment/Decrement  Wijzers, Arrays en Wijzers.

31

Meerdimensionale Tabellen

int A[5*4], i, j, k;

main() {

/* inlezen van tabel*/

k = 19;

for(i=4; i>=0; i--) {

for(j=3; j>=0; j--) {

A[k--] = getint();

}

}

}

| i R1, j R2, k R3 HIA.w R3,19

HIA.w R1,4

Page 32: 1 SOCS Hoofdstuk 1 Computerarchitectuur. 2 Overzicht Eenvoudig C Arrays  Klassiek gebruik  For opdracht, Increment/Decrement  Wijzers, Arrays en Wijzers.

32

Meerdimensionale Tabellen

int A[5*4], i, j, k;

main() {

/* inlezen van tabel*/

k = 19;

for(i=4; i>=0; i--) {

for(j=3; j>=0; j--) {

A[k--] = getint();

}

}

}

| i R1, j R2, k R3 HIA.w R3,19 HIA.w R1,4

fori: VGL.w R1,0 VSP KL,eindi

Page 33: 1 SOCS Hoofdstuk 1 Computerarchitectuur. 2 Overzicht Eenvoudig C Arrays  Klassiek gebruik  For opdracht, Increment/Decrement  Wijzers, Arrays en Wijzers.

33

Meerdimensionale Tabellen

int A[5*4], i, j, k;

main() {

/* inlezen van tabel*/

k = 19;

for(i=4; i>=0; i--) {

for(j=3; j>=0; j--) {

A[k--] = getint();

}

}

}

| i R1, j R2, k R3 HIA.w R3,19 HIA.w R1,4fori: VGL.w R1,0 VSP KL,eindi

HIA.w R2,3

Page 34: 1 SOCS Hoofdstuk 1 Computerarchitectuur. 2 Overzicht Eenvoudig C Arrays  Klassiek gebruik  For opdracht, Increment/Decrement  Wijzers, Arrays en Wijzers.

34

Meerdimensionale Tabellen

int A[5*4], i, j, k;

main() {

/* inlezen van tabel*/

k = 19;

for(i=4; i>=0; i--) {

for(j=3; j>=0; j--) {

A[k--] = getint();

}

}

}

| i R1, j R2, k R3 HIA.w R3,19 HIA.w R1,4fori: VGL.w R1,0 VSP KL,eindi HIA.w R2,3

forj: VGL.w R2,0 VSP KL,eindj

Page 35: 1 SOCS Hoofdstuk 1 Computerarchitectuur. 2 Overzicht Eenvoudig C Arrays  Klassiek gebruik  For opdracht, Increment/Decrement  Wijzers, Arrays en Wijzers.

35

Meerdimensionale Tabellen

int A[5*4], i, j, k;

main() {

/* inlezen van tabel*/

k = 19;

for(i=4; i>=0; i--) {

for(j=3; j>=0; j--) {

A[k--] = getint();

}

}

}

| i R1, j R2, k R3 HIA.w R3,19 HIA.w R1,4fori: VGL.w R1,0 VSP KL,eindi HIA.w R2,3forj: VGL.w R2,0 VSP KL,eindj

LEZBIG R0,A(R3-)

Page 36: 1 SOCS Hoofdstuk 1 Computerarchitectuur. 2 Overzicht Eenvoudig C Arrays  Klassiek gebruik  For opdracht, Increment/Decrement  Wijzers, Arrays en Wijzers.

36

Meerdimensionale Tabellen

int A[5*4], i, j, k;

main() {

/* inlezen van tabel*/

k = 19;

for(i=4; i>=0; i--) {

for(j=3; j>=0; j--) {

A[k--] = getint();

}

}

}

| i R1, j R2, k R3 HIA.w R3,19 HIA.w R1,4fori: VGL.w R1,0 VSP KL,eindi HIA.w R2,3forj: VGL.w R2,0 VSP KL,eindj LEZ BIG R0,A(R3-)

AFT.w R2,1SPR forj

Page 37: 1 SOCS Hoofdstuk 1 Computerarchitectuur. 2 Overzicht Eenvoudig C Arrays  Klassiek gebruik  For opdracht, Increment/Decrement  Wijzers, Arrays en Wijzers.

37

Meerdimensionale Tabellen

int A[5*4], i, j, k;

main() {

/* inlezen van tabel*/

k = 19;

for(i=4; i>=0; i--) {

for(j=3; j>=0; j--) {

A[k--] = getint();

}

}

}

| i R1, j R2, k R3 HIA.w R3,19 HIA.w R1,4fori: VGL.w R1,0 VSP KL,eindi HIA.w R2,3forj: VGL.w R2,0 VSP KL,eindj LEZ BIG R0,A(R3-) AFT.w R2,1 SPR forj

eindj: AFT.w R1,1 SPR fori

Page 38: 1 SOCS Hoofdstuk 1 Computerarchitectuur. 2 Overzicht Eenvoudig C Arrays  Klassiek gebruik  For opdracht, Increment/Decrement  Wijzers, Arrays en Wijzers.

38

Meerdimensionale Tabellen

int A[5*4], i, j, k;

main() {

/* inlezen van tabel*/

k = 19;

for(i=4; i>=0; i--) {

for(j=3; j>=0; j--) {

A[k--] = getint();

}

}

}

| i R1, j R2, k R3 HIA.w R3,19 HIA.w R1,4fori: VGL.w R1,0 VSP KL,eindi HIA.w R2,3forj: VGL.w R2,0 VSP KL,eindj LEZ BIG R0,A(R3-) AFT.w R2,1 SPR forjeindj: AFT.w R1,1 SPR fori

eindi: STP

Page 39: 1 SOCS Hoofdstuk 1 Computerarchitectuur. 2 Overzicht Eenvoudig C Arrays  Klassiek gebruik  For opdracht, Increment/Decrement  Wijzers, Arrays en Wijzers.

39

Meerdimensionale Tabellen

int A[5*4], i, j, k;

main() {

/* inlezen van tabel*/

k = 19;

for(i=4; i>=0; i--) {

for(j=3; j>=0; j--) {

A[k--] = getint();

}

}

...

}

| i R1, j R2, k R3 HIA.w R3,19 HIA.w R1,4fori: VGL.w R1,0 VSP KL,eindi HIA.w R2,3forj: VGL.w R2,0 VSP KL,eindj LEZ BIG R0,A(R3-) AFT.w R2,1 SPR forjeindj: AFT.w R1,1 SPR forieindi: STP

A: RESGR 20

Page 40: 1 SOCS Hoofdstuk 1 Computerarchitectuur. 2 Overzicht Eenvoudig C Arrays  Klassiek gebruik  For opdracht, Increment/Decrement  Wijzers, Arrays en Wijzers.

40

Meerdimensionale Tabellen

int A[5*4], i, j, k;

main() {

/* inlezen van tabel*/

k = 19;

for(i=4; i>=0; i--) {

for(j=3; j>=0; j--) {

A[k--] = getint();

}

}

...

}

| i R1, j R2, k R3 HIA.w R3,19 HIA.w R1,4fori: VGL.w R1,0 VSP KL,eindi HIA.w R2,3forj: VGL.w R2,0 VSP KL,eindj LEZ BIG R0,A(R3-) AFT.w R2,1 SPR forjeindj: AFT.w R1,1 SPR forieindi: STPA: RESGR 20 EINDPR

Page 41: 1 SOCS Hoofdstuk 1 Computerarchitectuur. 2 Overzicht Eenvoudig C Arrays  Klassiek gebruik  For opdracht, Increment/Decrement  Wijzers, Arrays en Wijzers.

41

Cursustekst

Hoofdstuk 1: pag. 52 pag. 55 Hoofdstuk 1: pag. 73 pag. 85