给出C代码的堆栈图

时间:2015-04-16 03:24:40

标签: c assembly stack

根据下面的 C 代码,汇编语言(AVR)堆栈会是什么样子?

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

int x; 

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

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

上面C代码的AVR中的堆栈表示是什么?

1 个答案:

答案 0 :(得分:0)

foo函数的堆栈帧类似于以下内容:首先是来自参数,然后保存帧指针,返回地址然后是局部变量。 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