根据下面的 C 代码,汇编语言 (AVR) 堆栈会是什么样子。
我正在尝试了解 C 代码如何转换为 AVR 汇编语言,并且我需要能够执行以下操作来准备考试中可能出现的编程问题。
int x;
int foo(char a, int b) {
int z;
}
int main() {
int q = foo('a',0x93);
}
上面的 C 代码在 AVR 中的堆栈表示是什么?
最佳答案
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
关于c - 给定 C 代码的堆栈图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29664791/