Question
Consider the program below, where M and N are (secret) #define'd constants: int mat1[M][N]; int mat2[N][M]; int copy_element(int i, int j){ mat1[i][j]=mat2[j][i] } Here is
Consider the program below, where M and N are (secret) #define'd constants:
int mat1[M][N];
int mat2[N][M];
int copy_element(int i, int j){
mat1[i][j]=mat2[j][i]
}
Here is the compiled assembly code for the above program:
copy_element:
pushq %rbp
movq %rsp, %rbp
movl %edi, -4(%rbp)
movl %esi, -8(%rbp)
movl -4(%rbp),%eax
movl -8(%rbp), %edx
movslq %edx, %rdx
salq $3, %rdx
addq %rdx, %rax
movl mat2(,%rax,4), %ecx
movl -8(%rbp), %eax
movslq %eax, %rdx
movq %rdx, %rax
addq %rax, %rax
addq %rdx, %rax
salq $2, %rax
addq %rsi, %rax
movl %ecx, mat1(,%rax,4)
popq %rbp
ret
Based on your understanding of C array representation, and the manner in which indices i and j are used, what are the values of M and N?
Step by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started