(1) The following code transposes the elements of an M × M array, where M is a con- stant defined by # define: void transpose(long A[M] [M]) { long i, j; for (i = 0; i < M; i++) for (j = 0; j < i; j++) { long t = A[i] [j] A[j] [i] } A[i] [j]; A[j] [i]; %3D t; } When compiled, with optimization level -01, GCC generates the following code for the inner loop of the function. 1 .L1: (%rdx), (%rax), %rsi, %rcx, $8, %rcx %rsi 2 movq 3 movq (%rdx) (%rax) %rdx 4 movq 5 movq 6 addq addq $120, %rdi, %rax %rax стра jne .L1 We can see that GCC has converted the array indexing to pointer code. (a) Which register holds a pointer to array element A[i] [j]? (b) Which register holds a pointer to array element A[j] [i]? (c) What is the value of M?

Computer Networking: A Top-Down Approach (7th Edition)
7th Edition
ISBN:9780133594140
Author:James Kurose, Keith Ross
Publisher:James Kurose, Keith Ross
Chapter1: Computer Networks And The Internet
Section: Chapter Questions
Problem R1RQ: What is the difference between a host and an end system? List several different types of end...
icon
Related questions
Question

(1) The following code transposes the elements of an M × M array, where M is a con- stant defined by # define:

void transpose(long A[M][M]) { long i, j;

for (i = 0; i < M; i++)
for (j = 0; j < i; j++) {

long t = A[i][j]; A[i][j] = A[j][i]; A[j][i] = t;

} }

When compiled, with optimization level −O1, GCC generates the following code for the inner loop of the function.

1 .L1: 2
3
4

5 6 7 8 9

movq movq movq movq addq addq cmpq jne .L1

(%rdx), %rcx (%rax), %rsi

(%rdx)

(%rax) $8, %rdx $120, %rax %rdi, %rax

%rsi, %rcx,

We can see that GCC has converted the array indexing to pointer code.

(a) Which register holds a pointer to array element A[i][j]? (b) Which register holds a pointer to array element A[j][i]?

(c) What is the value of M?

(1) The following code transposes the elements of an M × M array, where M is a con-
stant defined by # define:
void transpose(long A [M] [M]) {
long i, j;
for (i = 0; i < M; i++)
for (j
= 0; j < i; j++) {
long t = A[i] [j];
A[i] [j]
A[j] [i]
}
%3D
A[j] [i];
=
t;
}
When compiled, with optimization level -01, GCC generates the following code
for the inner loop of the function.
1 .L1:
(%rdx),
(%rax),
2
movq
%rcx
3
movq
%rsi
%rsi,
%rcx,
$8,
(%rdx)
(%rax)
%rdx
4
movq
5
movq
addq
addq
$120,
%rdi,
%rax
%rax
7
8
стра
9
jne .L1
We can see that GCC has converted the array indexing to pointer code.
(a) Which register holds a pointer to array element A[i] [j]?
(b) Which register holds a pointer to array element A[j] [i]?
(c) What is the value of M?
Transcribed Image Text:(1) The following code transposes the elements of an M × M array, where M is a con- stant defined by # define: void transpose(long A [M] [M]) { long i, j; for (i = 0; i < M; i++) for (j = 0; j < i; j++) { long t = A[i] [j]; A[i] [j] A[j] [i] } %3D A[j] [i]; = t; } When compiled, with optimization level -01, GCC generates the following code for the inner loop of the function. 1 .L1: (%rdx), (%rax), 2 movq %rcx 3 movq %rsi %rsi, %rcx, $8, (%rdx) (%rax) %rdx 4 movq 5 movq addq addq $120, %rdi, %rax %rax 7 8 стра 9 jne .L1 We can see that GCC has converted the array indexing to pointer code. (a) Which register holds a pointer to array element A[i] [j]? (b) Which register holds a pointer to array element A[j] [i]? (c) What is the value of M?
Expert Solution
trending now

Trending now

This is a popular solution!

steps

Step by step

Solved in 2 steps

Blurred answer
Recommended textbooks for you
Computer Networking: A Top-Down Approach (7th Edi…
Computer Networking: A Top-Down Approach (7th Edi…
Computer Engineering
ISBN:
9780133594140
Author:
James Kurose, Keith Ross
Publisher:
PEARSON
Computer Organization and Design MIPS Edition, Fi…
Computer Organization and Design MIPS Edition, Fi…
Computer Engineering
ISBN:
9780124077263
Author:
David A. Patterson, John L. Hennessy
Publisher:
Elsevier Science
Network+ Guide to Networks (MindTap Course List)
Network+ Guide to Networks (MindTap Course List)
Computer Engineering
ISBN:
9781337569330
Author:
Jill West, Tamara Dean, Jean Andrews
Publisher:
Cengage Learning
Concepts of Database Management
Concepts of Database Management
Computer Engineering
ISBN:
9781337093422
Author:
Joy L. Starks, Philip J. Pratt, Mary Z. Last
Publisher:
Cengage Learning
Prelude to Programming
Prelude to Programming
Computer Engineering
ISBN:
9780133750423
Author:
VENIT, Stewart
Publisher:
Pearson Education
Sc Business Data Communications and Networking, T…
Sc Business Data Communications and Networking, T…
Computer Engineering
ISBN:
9781119368830
Author:
FITZGERALD
Publisher:
WILEY