Я пытаюсь сделать многопоточное ядро для Micro ATMEGA328P Micro An для этого, мне нужно знать, как работает указатель стека.

-2
Radu 8 Мар 2018 в 00:27

1 ответ

Лучший ответ

Скорее всего, ваши функции регулируются правильно, поэтому все на самом деле сделано прямо в setup(), без функциональных вызовов. Если вы хотите насильственно отключить встроить для них встроить (чтобы увидеть изменение указателя стека), вы можете применить атрибут GCC {noinline.

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

Если это все еще не работает, возможно, что GCC наносит оптимизацию вызова хвоста в любом случае. В этом случае простой способ сделать ваши функции не подвержен этой оптимизации, - это печатать SP как раньше, так и после вызова.

1
Matteo Italia 8 Мар 2018 в 09:56