堆栈指针的工作原理

时间:2018-03-07 21:27:05

标签: c++ arduino avr atmega avr-gcc

我正在尝试为atmega328p micro创建一个多线程内核,因为我需要知道堆栈指针是如何工作的。

1 个答案:

答案 0 :(得分:1)

最有可能的是,你的函数正确地被内联,所以一切都在setup()中直接完成,没有涉及函数调用。如果要强制禁用它们的内联(以查看堆栈指针更改),则可以应用gcc noinline属性。

void __attribute__ ((noinline)) func1() {
    ...
}

如果这仍然不起作用,gcc可能无论如何应用尾调用优化。在这种情况下,使您的函数不易于进行此优化的简单方法是在调用之前和之后打印SP