Question: Storage-mapping functions. (10 points)Suppose we are generating code for an imperative PL on a machine with 8-byte floating-point numbers, 4-byte integers, and 1-byte characters. Also
Storage-mapping functions. (10 points)Suppose we are generating code for an imperative PL on a machine with 8-byte floating-point numbers, 4-byte integers, and 1-byte characters. Also assume thatcharacters, integers and floating-point numbers must each align to the left of a word (32-bits, or 4-bytes, long). We plan to use a contiguous row-major layout for multidimensional arrays. Furthermore, we do not wish to reorder fields of records or to pack either records or arrays. And we will assume without checking that all array subscripts are in bounds.(a)Consider the following variable declarations:A: array[1:10 , 10:100 ] of real;I: integer;Show the storage mapping function Loc for this array A and then use itto compute the address of element A[ 3 , I ]. Assume Loc( A[ 1, 10 ] ) = 1234.(b)Now consider the following more complex declarations:R: recordX: integer;Y: char;A: array[1:10 ,10:20 ] of recordZ: real;B: array[ 10:71 ] of char;endrecord;end record;I, K: integer;Assume that these declarations are local to the current subprogram. Note the lower bounds on indices in A; the first element is A[ 1 , 10 ] which is stored in location 2000. Compute the address of the record component R.A[ 2 , J ].B[ K ].
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
