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

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!