如何在C中使用FP

我正在努力学习并更好地理解FP(BP),根据我的教科书“FP(BP):指向当前活动function的堆栈帧”。 我已经知道堆栈帧链接列表以0结尾。因此,为了打印出堆栈帧链接列表,我编写了这个函数:

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; } 

所以我认为十六行地址是有效的。 它打印3个hex地址。 我可能错了,但我要做的是打印“active function”中所有3个变量的值以及它们的hex地址。 我的价值线不起作用。 也许我不明白函数堆栈是如何工作的? 我尝试打印我喜欢我,*我,我,尝试了所有不同的东西,不起作用。

有什么帮助澄清?