Існує багато мікроконтролерів низького рівня, які мають стеки апаратних засобів для підпрограми виклику / повернення та обробки переривань, але ускладнюють, якщо не неможливо, зберігати дані (змінні) там, а реалізація суто програмного стеку даних буде дуже неефективною. 8051 - один класичний приклад, а PIC12 низького класу (PIC12 / PIC16) - інший. На цих машинах стек даних імітується шляхом призначення статичних місць зберігання для автоматичних змінних, при цьому кількість повторного використання цих розташувань залежить від складності компілятора.
Зауважте, що якщо емуляція стека робиться таким чином, це означає, що рекурсія - функція, яка викликує себе прямо чи опосередковано - не працює, оскільки кожен екземпляр функції повторно використовує однакові статичні місця для своїх нібито "приватних" змінних. Деякі компілятори дозволяють обмежено використовувати рекурсію (як правило, реалізовану за допомогою #pragma
певного типу), що призведе до створення справжнього стека даних, незалежно від того, наскільки це сповільнює роботу.
Як і осторонь, існували архітектури процесора, які взагалі не мали апаратного стеку, навіть не для підпрограми / обробки перерв, включаючи DEC PDP-8 та IBM System / 360. На цих машинах ПК (зворотна адреса) та реєстр статусу (для перерв) зберігалися в регістрах або місцях пам'яті, але в усіх випадках, про які я думаю, машина також мала досить гнучкі режими адреси, що полегшувало створення стека з програмним забезпеченням.