Lecture Slides 06 062-Nestedarrays
Lecture Slides 06 062-Nestedarrays
Lecture Slides 06 062-Nestedarrays
Nested Arrays
University of Washington
Nested Arrays
University of Washington
9 8 1 9 5 9 8 1 0 5 9 8 1 0 3 9 8 1 1 5
Nested Arrays
University of Washington
Nested Arrays
University of Washington
4*R*C Bytes
Nested Arrays
University of Washington
int A[R][C];
A A A A A A
[0] ••• [0] • • • [i] ••• [i] • • • [R-1] ••• [R-1]
[0] [C-1] [0] [C-1] [0] [C-1]
A A+i*C*4 A+(R-1)*C*4
Nested Arrays
University of Washington
Nested Arrays
University of Washington
# %eax = index
leal (%eax,%eax,4),%eax # 5 * index
leal sea(,%eax,4),%eax # sea + (20 * index)
Row Vector
sea[index] is array of 5 ints (a zip_dig data type)
Starting address sea+20*index
IA32 Code
Computes and returns address
Compute as sea+4*(index+4*index)=sea+20*index
Nested Arrays
University of Washington
int A[R][C];
A A A A A
[0] ••• [0] • • • ••• [i] ••• • • • [R-1] ••• [R-1]
[0] [C-1] [j] [0] [C-1]
A A + i*C*4 A + (R-1)*C*4
Nested Arrays
University of Washington
int A[R][C];
A A A A A
[0] ••• [0] • • • ••• [i] ••• • • • [R-1] ••• [R-1]
[0] [C-1] [j] [0] [C-1]
A A + i*C*4 A + (R-1)*C*4
A + i*C*4 + j*4
Nested Arrays
University of Washington
Array Elements
sea[index][dig] is int
Address: sea + 20*index + 4*dig
IA32 Code
Computes address sea + 4*dig + 4*(index+4*index)
movl performs memory reference
Nested Arrays
University of Washington
zip_dig
sea[4]; 9 8 1 9 5 9 8 1 0 5 9 8 1 0 3 9 8 1 1 5
Nested Arrays