problems:
- Show the matrix base address (of A, B and C) in hexadecimal.
- Report the size of a double floating point number.
- Report the size of the matrix, in bytes.
- For each of A, B and C, report the address of:
- array[0][0]
- array[0][1]
- array[0][size-1]
- array[1][0]
- array[size-1][0]
- array[size-1][1]
- array[size-1][size-1]
- Give a formula for calculating the address of element i,j of the matrix.
- Is this row major or column major form of storing a matrix?
- Compile your C program to assembly (“-S” option on compile).
- Edit the assembly program, adding comments. Ignore everything except the matrix multiply portion:
- Identify the loop controls. How many nested loops are there?
- Identify the instructions that calculate the element addresses for A, B, and C matrix elements.
- Identify the actual floating point multiply and adds.
- Identify what variables are kept in CPU registers.
- Calculate the total number of instructions in the matrix multiply.
Parts of this will be kind of a hassle, because of the complicated x86 and ARM addressing modes (MIPS is simpler). Submit the edited assembly source, and a report (in PDF) with the answers to the other questions. Submit them in a tar or zip file.


0 comments