Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
540 views
in Technique[技术] by (71.8m points)

cpu registers - How to work with FP in C

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 
", i); //Not working
    printf("Hex Address: %#X 
", 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?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)
Waitting for answers

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...