lecture_slides_06_063-multilevelarrays
lecture_slides_06_063-multilevelarrays
Multi-level Arrays
University of Washington
#define UCOUNT 3
int *univ[UCOUNT] = {uw, cmu, ucb};
Multi-level Arrays
University of Washington
# %ecx = index
# %eax = dig
leal 0(,%ecx,4),%edx # 4*index
movl univ(%edx),%edx # Mem[univ+4*index]
movl (%edx,%eax,4),%eax # Mem[...+4*dig]
Computation (IA32)
Element access Mem[Mem[univ+4*index]+4*dig]
Must do two memory reads
First get pointer to row array
Then access element within array
Multi-level Arrays
University of Washington
Multi-level Arrays
University of Washington
Arrays in C
Contiguous allocations of memory
No bounds checking
Can usually be treated like a pointer to first element
(elements are offset from start of array)
Nested (multi-dimensional) arrays are contiguous in memory
(row-major order)
Multi-level arrays are not contiguous
(pointers used between levels)
Multi-level Arrays