This C program is running. It was compiled using a perfectly ordinary compiler t
ID: 3815630 • Letter: T
Question
This C program
is running. It was compiled using a perfectly ordinary compiler that did no special optimisations, and it uses stack frames in the standard way.
When main() was called, the stack pointer’s value was 10000, and the frame pointer’s value was 0.
Show exactly the contents of the three stack frames as they are immediately before the printf in check is executed. Show exactly the contents of all memory locations within the three stack frames at that moment. Show all work.
int check (int x, int y) int a, b, c; printf ("check a J sd, b J d n'', a, b) return C void compute (int A int pos) int k A pos-11, m A [pos], n A [pos+1] int t check (k n) if (m*m t) printf ("Error n") int main int a F 333, b 444; int x 51; int c 555 d 666; x [0] x [1] 2; x [2] 4; x 4 16 5 32 x compute (x 2)Explanation / Answer
when we call compute(x,2)
inside compute pos =2 and x is array
k = A[pos-1] = A[2-1] =A[1] = 2
m = A[pos] = A[2] = 4
n = A[pos+1] = A[2+1] =A[3] = 8
t = check(k,n) ==> check(2,8)
a=x+y = 2+8=10;
b=x-y = -6
c = a*b = -60;
so value of t = -60
if(m*m <t) ==> (4*4<-60) is not true
so output is check: a=10,b=-6
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.