Match each of the assembler routines on the left with the equivalent C function on the right. Write the name of the label (e.g., foo) to the right of the corresponding function. Note: shrq is the logical right shift instruction, and sarq is the arithmetic right shift instruction. foo1: leaq 0(,%rdi, 8), %rax long choice1 (long x) { ret return x - 8 < 0; } long choice2(long x) foo2: { movq %rdi, %rax return 8*x; salq $8, %rax } ret long choice3 (long x) { return x>>8; foo3: } movq sarq %rdi, %rax $8, %rax long choice4 (long x) ret { return x*256; } foo4: long choice5 (long x) leaq -8 (%rdi), %rax { ret return x-8; } long choice6 (long x) foo5: { leaq -8 (%rdi), %rax return x+8; shrq $63, %rax } ret
Match each of the assembler routines on the left with the equivalent C function on the right. Write the name of the label (e.g., foo) to the right of the corresponding function. Note: shrq is the logical right shift instruction, and sarq is the arithmetic right shift instruction. foo1: leaq 0(,%rdi, 8), %rax long choice1 (long x) { ret return x - 8 < 0; } long choice2(long x) foo2: { movq %rdi, %rax return 8*x; salq $8, %rax } ret long choice3 (long x) { return x>>8; foo3: } movq sarq %rdi, %rax $8, %rax long choice4 (long x) ret { return x*256; } foo4: long choice5 (long x) leaq -8 (%rdi), %rax { ret return x-8; } long choice6 (long x) foo5: { leaq -8 (%rdi), %rax return x+8; shrq $63, %rax } ret
C++ for Engineers and Scientists
4th Edition
ISBN:9781133187844
Author:Bronson, Gary J.
Publisher:Bronson, Gary J.
Chapter10: Pointers
Section10.1: Addresses And Pointers
Problem 7E
Related questions
Question

Transcribed Image Text:Match each of the assembler routines on the left with the equivalent C function on
the right. Write the name of the label (e.g., foo) to the right of the corresponding
function. Note: shrq is the logical right shift instruction, and sarq is the arithmetic
right shift instruction.
foo1:
leaq
0(,%rdi, 8), %rax
long choice1 (long x)
{
ret
return x -
8 < 0;
}
long choice2(long x)
foo2:
{
movq
%rdi, %rax
return 8*x;
salq
$8, %rax
}
ret
long choice3 (long x)
{
return x>>8;
foo3:
}
movq
sarq
%rdi, %rax
$8, %rax
long choice4 (long x)
ret
{
return x*256;
}
foo4:
long choice5 (long x)
leaq
-8 (%rdi), %rax
{
ret
return x-8;
}
long choice6 (long x)
foo5:
{
leaq
-8 (%rdi), %rax
return x+8;
shrq
$63, %rax
}
ret
Expert Solution

This question has been solved!
Explore an expertly crafted, step-by-step solution for a thorough understanding of key concepts.
Step by step
Solved in 2 steps

Recommended textbooks for you

C++ for Engineers and Scientists
Computer Science
ISBN:
9781133187844
Author:
Bronson, Gary J.
Publisher:
Course Technology Ptr

Microsoft Visual C#
Computer Science
ISBN:
9781337102100
Author:
Joyce, Farrell.
Publisher:
Cengage Learning,

Systems Architecture
Computer Science
ISBN:
9781305080195
Author:
Stephen D. Burd
Publisher:
Cengage Learning

C++ for Engineers and Scientists
Computer Science
ISBN:
9781133187844
Author:
Bronson, Gary J.
Publisher:
Course Technology Ptr

Microsoft Visual C#
Computer Science
ISBN:
9781337102100
Author:
Joyce, Farrell.
Publisher:
Cengage Learning,

Systems Architecture
Computer Science
ISBN:
9781305080195
Author:
Stephen D. Burd
Publisher:
Cengage Learning

C++ Programming: From Problem Analysis to Program…
Computer Science
ISBN:
9781337102087
Author:
D. S. Malik
Publisher:
Cengage Learning
Programming Logic & Design Comprehensive
Computer Science
ISBN:
9781337669405
Author:
FARRELL
Publisher:
Cengage

EBK JAVA PROGRAMMING
Computer Science
ISBN:
9781337671385
Author:
FARRELL
Publisher:
CENGAGE LEARNING - CONSIGNMENT