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 Which three statements are used to set the return value of the function (two in one branch and one in another; use hex addresses starting with 0x and omitting leading zeroes)? Memory addresses of the first two statements that work together: Memory address of the third statement in the other branch:
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
Which three statements are used to set the return value of the function (two in one branch and one in another; use hex addresses starting with 0x and omitting leading zeroes)?
Memory addresses of the first two statements that work together:
Trending now
This is a popular solution!
Step by step
Solved in 3 steps