问题
I am trying to learn and better understand FP(BP), which according to my textbook is "FP(BP): point to the stack frame of current active function". I have learned that the stack frame link list ends in 0. Therefore, in order to print out the stack frame link list, I have written this function:
int a = 1;
int b = 2;
int c = 3;
asm("movl %ebp, FP"); //Sets FP
int *i = FP;
while(i != 0)
{
printf("Value: %d \n", i); //Not working
printf("Hex Address: %#X \n", i);
i = *i;
}
So I think the hex line address is working. It prints 3 hex addresses. I may be wrong but what I'm trying to do is print the values of all 3 variables in the "active function" and also their hex addresses. My value line is not working. Maybe I'm not understanding how function stack is working? I've tried printing i like i, *i, &i, tried all difference things, doesn't work.
Any help clarifying?
来源:https://stackoverflow.com/questions/48274130/how-to-work-with-fp-in-c