void baz(int a, int * p) { int c; c = a-*p; if (c) { int d = c*2; *p -= d; (continued on next page) pushq %rbp movq %rsp,%rbp subq $16,%rsp movl %ecx,16(%rbp) movq %rdx, 24(%rbp) movq 24(%rbp), %rax movl (%rax),%eax movl 16(%rbp),%edx subl %eax,%edx movl %edx,%eax movl %eax,-4(%rbp) cmpl $0, -4(%rbp) je L2 movl 4(%rbp),%eax addl %eax,%eax movl %eax,-8(%rbp) movl 24(%rbp),%rax movl (%rax),%eax -8(%rbp),%eax %eax,%edx movq 24(%rbp), %rax movl %edx, (%rax) jmp L4: subl movl

Systems Architecture
7th Edition
ISBN:9781305080195
Author:Stephen D. Burd
Publisher:Stephen D. Burd
Chapter10: Application Development
Section: Chapter Questions
Problem 6VE
icon
Related questions
Question
void baz(int a, int * p)
{
pushq %rbp
movq %rsp,%rbp
subq $16,%rsp
int c;
c = a-*p;
movl %ecx,16(%rbp)
movq %rdx, 24(%rbp)
movq 24(%rbp), %rax
movl (%rax),%eax
movl 16(%rbp),%edx
subl %eax,%edx
movl %edx,%eax
movl %eax,-4(%rbp)
cmpl $0, -4(%rbp)
je L2
if (c)
{
int d = c*2;
movl -4(%rbp),%eax
addl %eax,%eax
movl %eax,-8(%rbp)
*p -= d;
movl 24(%rbp),%rax
movl (%rax),%eax
subl -8(%rbp),%eax
movl %eax,%edx
movq 24(%rbp), %rax
movl %edx, (%rax)
jmp L4:
}
(continued on next page)
Transcribed Image Text:void baz(int a, int * p) { pushq %rbp movq %rsp,%rbp subq $16,%rsp int c; c = a-*p; movl %ecx,16(%rbp) movq %rdx, 24(%rbp) movq 24(%rbp), %rax movl (%rax),%eax movl 16(%rbp),%edx subl %eax,%edx movl %edx,%eax movl %eax,-4(%rbp) cmpl $0, -4(%rbp) je L2 if (c) { int d = c*2; movl -4(%rbp),%eax addl %eax,%eax movl %eax,-8(%rbp) *p -= d; movl 24(%rbp),%rax movl (%rax),%eax subl -8(%rbp),%eax movl %eax,%edx movq 24(%rbp), %rax movl %edx, (%rax) jmp L4: } (continued on next page)
else
{
int e = "p/2;
L2:
movq 24(%rbp),%rax
movl (%rax),%eax
movl %eax, %edx
shrl $31, %edx
addl %edx, %eax
sarl
%eax
movl %eax,-12(%rbp)
*p += e-a;
movl 24(%rbp),%rax
movl (%rax), %edx
movl -12(%rbp), %eax
subl 16(%rbp),%eax
addl
%eax,%edx
movq 24(%rbp), %rax
movl %edx,(%rax)
L4:
addq $16, %rsp
popq %rbp
ret
}
3. Registers
Rewrite the preceding example using as many registers as is reasonable.
If you use any callee save registers, remember to add the save code.
Transcribed Image Text:else { int e = "p/2; L2: movq 24(%rbp),%rax movl (%rax),%eax movl %eax, %edx shrl $31, %edx addl %edx, %eax sarl %eax movl %eax,-12(%rbp) *p += e-a; movl 24(%rbp),%rax movl (%rax), %edx movl -12(%rbp), %eax subl 16(%rbp),%eax addl %eax,%edx movq 24(%rbp), %rax movl %edx,(%rax) L4: addq $16, %rsp popq %rbp ret } 3. Registers Rewrite the preceding example using as many registers as is reasonable. If you use any callee save registers, remember to add the save code.
Expert Solution
steps

Step by step

Solved in 5 steps with 1 images

Blurred answer
Knowledge Booster
Problems on Dynamic Programming
Learn more about
Need a deep-dive on the concept behind this application? Look no further. Learn more about this topic, computer-science and related others by exploring similar questions and additional content below.
Similar questions
  • SEE MORE QUESTIONS
Recommended textbooks for you
Systems Architecture
Systems Architecture
Computer Science
ISBN:
9781305080195
Author:
Stephen D. Burd
Publisher:
Cengage Learning