Consider the program below, where MandN are (secret) #define'd constants: int mat1[M][N]; int mat2[N][M]; int copy_element(int i, int j){ mat1[i]i]=mat2[GO Here is the compiled assembly code for the...


Consider the program below, where MandN are<br>(secret) #define'd constants:<br>int mat1[M][N];<br>int mat2[N][M];<br>int copy_element(int i, int j){<br>mat1[i]i]=mat2[GO<br>Here is the compiled assembly code for the above<br>program:<br>copy_element:<br>pushq %rbp<br>movq %rsp, %rbp<br>movl %edi, -4(%rbp)<br>movl %esi, -8(%rbp)<br>movl -4(%rbp),%eax<br>movl -8(%rbp), %edx<br>movslq %edx, %rdx<br>salq $3, %rdx<br>addq %rdx, %rax<br>movl mat2(,%rax,4), %ecx<br>movl -8(%rbp), %eax<br>movslq %eax, %rdx<br>movq %rdx, %rax<br>addq %rax, %rax<br>addq %rdx, %rax<br>salq $2, %rax<br>addq %rsi, %rax<br>movl %ecx, mat1(,%rax,4)<br>popq %rbp<br>ret<br>Based on your understanding of C array<br>representation, and the manner in which indices i<br>and j are used, what are the values of M and N?<br>

Extracted text: Consider the program below, where MandN are (secret) #define'd constants: int mat1[M][N]; int mat2[N][M]; int copy_element(int i, int j){ mat1[i]i]=mat2[GO 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?

Jun 05, 2022
SOLUTION.PDF

Get Answer To This Question

Related Questions & Answers

More Questions ยป

Submit New Assignment

Copy and Paste Your Assignment Here