In C, multidimensional arrays are stored in row-major order.
For a 3D array declaration T X[D1][D2][D3] where the element size is S bytes:
Offset of X[i][j][k]=((i×D2+j)×D3+k)×S Offset=i×(D2×D3×S)+j×(D3×S)+k×S From the given intermediate code:
t2 = k * 4 ⟹S=4 bytes=32 bits (element type is int).
t1 = j * 32 ⟹D3×S=32⟹D3×4=32⟹D3=8.
t0 = i * 1024 ⟹D2×D3×S=1024⟹D2×32=1024⟹D2=32.
Thus, the array elements are int, and the last two dimensions are [32][8].
Hence, X is declared as int X[32][32][8] (Option A).