Suppose we have the following C function: long stir (long x) { if (x <= 1) { return 1; } // we're not concerned about small values long result = 0; if (x & 1) { result = x + 5; } else { result = x / 2; // if x is odd } return result; In the assembly implementation of the function below, fill in the three missing jump instructions so that it matches the code above: stir: cmpg $1, trdi labell movą $1, trax retą # return 1 labell: xorg trax, trax # result = 0 testg $1, trdi label2 movą šrdi, trax addą $5, $rax * result x + 5 label3 label2: movą trdi, trax shlq $1, trax * result = x / 2 label3: retą

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

Need help with computer science Question. 

Suppose we have the following C function:
long stir (long x)
if (x <= 1) { return 1; }
// we're not concerned about small values
long result = 0;
if (x & 1) {
result = x + 5;
} else {
result = x / 2;
// if x is odd
return result;
In the assembly implementation of the function below, fill in the three missing jump instructions so that it matches the code above:
stir:
cmpg $1, trdi
labell
movą $1, trax
retą
# return 1
labell:
# result = 0
xorq trax,
testą $1, trdi
šrax
label2
movą trdi, trax
addg $5, Srax
# result = x + 5
label3
label2:
movą trdi, trax
shig $1, šrax
* result = x/ 2
label3:
retq
Transcribed Image Text:Suppose we have the following C function: long stir (long x) if (x <= 1) { return 1; } // we're not concerned about small values long result = 0; if (x & 1) { result = x + 5; } else { result = x / 2; // if x is odd return result; In the assembly implementation of the function below, fill in the three missing jump instructions so that it matches the code above: stir: cmpg $1, trdi labell movą $1, trax retą # return 1 labell: # result = 0 xorq trax, testą $1, trdi šrax label2 movą trdi, trax addg $5, Srax # result = x + 5 label3 label2: movą trdi, trax shig $1, šrax * result = x/ 2 label3: retq
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