3.60 For Loop
★★
Consider the following assembly code:
The preceding code was generated by compiling C code that had the following overall form:
Your task is to fill in the missing parts of the code to get a program equivalent to the generated assembly code. Recall that the result of the function is returened in register %rax. You will find it helpful to examine the assembly code before, during , and after the loop to form a consistent mapping between the registers and the program variables.
A. Which registers hold program values x
, n
, result
, and mask
?
x in %rdi, n in %eax, result in %rax, mask in %rdx
B. What are the initial values of result
and mask
?
C. What is the test condition for mask
?
D. How does mask
get updated?
E. How does result
get updated?
F. Fill in all the missing parts of the C code.
Last updated