Using the following C code and assembly code answer the following; C: long int nothingGreater(long int num) { if (num > 240) { return 240 - num; } else { return num; } } Assembly: 0x00000000004004ed <+0>: push %rbp 0x00000000004004ee <+1>: mov %rsp,%rbp 0x00000000004004f1 <+4>: mov %rdi,-0x8(%rbp) 0x00000000004004f5 <+8>: cmpq $0xf0,-0x8(%rbp) 0x00000000004004fd <+16>: jle 0x40050a 0x00000000004004ff <+18>: mov $0xf0,%eax 0x0000000000400504 <+23>: sub -0x8(%rbp),%rax 0x0000000000400508 <+27>: jmp 0x40050e 0x000000000040050a <+29>: mov -0x8(%rbp),%rax 0x000000000040050e <+33>: pop %rbp 0x000000000040050f <+34>: retq What are the memory addresses of the three statements that implement the if statement (provide hex addresses with 0x prefix and without leading zeroes)? The first two statements that work together: The third statement that skips the else code if the if branch was taken:
Using the following C code and assembly code answer the following;
C:
long int nothingGreater(long int num) {
if (num > 240) {
return 240 - num; }
else { return num; }
}
Assembly:
0x00000000004004ed <+0>: push %rbp
0x00000000004004ee <+1>: mov %rsp,%rbp
0x00000000004004f1 <+4>: mov %rdi,-0x8(%rbp)
0x00000000004004f5 <+8>: cmpq $0xf0,-0x8(%rbp)
0x00000000004004fd <+16>: jle 0x40050a <nothingGreater+29>
0x00000000004004ff <+18>: mov $0xf0,%eax
0x0000000000400504 <+23>: sub -0x8(%rbp),%rax
0x0000000000400508 <+27>: jmp 0x40050e <nothingGreater+33>
0x000000000040050a <+29>: mov -0x8(%rbp),%rax
0x000000000040050e <+33>: pop %rbp
0x000000000040050f <+34>: retq
What are the memory addresses of the three statements that implement the if statement (provide hex addresses with 0x prefix and without leading zeroes)?
The first two statements that work together:
The third statement that skips the else code if the if branch was taken:
The subject at hand involves analyzing a C function named nothingGreater
and its corresponding assembly code. In particular, we are examining the memory addresses of key statements that implement an if-else construct within the code to understand the control flow in the program. This analysis offers insights into how the conditional logic is translated into low-level machine instructions.
Step by step
Solved in 3 steps