根据下面的 C 代码,汇编语言(AVR)堆栈会是什么样子?
我正在尝试理解 C 代码如何转换为AVR汇编语言,我需要能够执行以下操作以准备可能出现在我的考试中的编程问题。
int x;
int foo(char a, int b) {
int z;
}
int main() {
int q = foo('a',0x93);
}
上面C代码的AVR中的堆栈表示是什么?
答案 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