Heres some lowquality code given to me void foo int x int a

Here\'s some \"low-quality code given to me:

void foo (int x) int a [3]; char buf [4] a 11 gets (buf); print f (\"a 0 0x x, a [1] Oxsx, buf s n\", a [01, a C1), buf) In a program containing this code, procedure foo has the following disassembled form: LCO: string \"a [0] 0x x, a [1] 0x x, buf s n\" foo push %rbx subg $16, srsp Gedi, sebx movl &rsp; %rdi nova call gets &rsp; orCX nova movl Sebx, oedx movl $-2525 79085 se si movl LCO oedi movl 0, eaX printf call addq 16 \"orSp Srbx popq ret For the following questions, recall that: gets is a standard C library routine. x86-64 machines are little-endian. C strings are null-terminated (i.e., terminated by a character with value 0x00). Characters \'0\' through \'9\' have ASCII codes 0x30 through 0x39.

Solution

Answer A:

Answer B-

0xF0F1F2F3

x

01

Answer C:

Using pointers array can be allocated on the stack. Answer will not change but complexity of execution will change.

Program Value Decimal Offset
a -12 Y
a[2] -4 Y
x +8 N
buf -16 Y
buf[3] -13 Y
Saved value of register %rbx -20 N
Here\'s some \

Get Help Now

Submit a Take Down Notice

Tutor
Tutor: Dr Jack
Most rated tutor on our site