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 a. What's the starting address of nothingGreater in memory (specify in hex starting with 0x; you may omit leading zeroes)? b. What register is the argument stored in when the function starts (give the 3-letter abbreviation with a % beforehand)?
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
a. What's the starting address of nothingGreater in memory (specify in hex starting with 0x; you may omit leading zeroes)?
b. What register is the argument stored in when the function starts (give the 3-letter abbreviation with a % beforehand)?
In this analysis, examine a C function, "nothingGreater," along with its corresponding assembly code snippet. The C function takes a long integer as input and performs a simple comparison operation. If the input number is greater than 240, it returns the result of subtracting 240 from the input. Otherwise, it returns the input number itself.
The associated assembly code represents the low-level implementation of this function. Determine the starting address of the function in memory and identify the register in which the function's argument is stored when the function begins its execution.
Trending now
This is a popular solution!
Step by step
Solved in 3 steps