给定 C 代码的堆栈图

Diagram of Stack Given C Code

给定下面的 C 代码,汇编语言 (AVR) 堆栈 会是什么样子。

我正在尝试了解 C 代码如何转换为 AVR 汇编语言,我需要能够执行以下操作以准备可能出现的编程问题我的考试。

int x; 

int foo(char a, int b) {
    int z; 
}

int main() {
    int q = foo('a',0x93); 
}

上述 C 代码在 AVR 中的堆栈表示形式是什么?

foo 函数的堆栈帧类似于以下内容:首先是参数,然后是保存的帧指针,return 地址然后是局部变量。 Int 是 4 个字节,所以程序自然会从 esp 中减去 4 为局部变量腾出空间。

这是视觉上的:

int b     < bottom of stack, highest memory address
char a
ret address
fp
local variables < top of stack, lowest memory address