Ada banyak mikrokontroler tingkat rendah yang memiliki tumpukan perangkat keras untuk panggilan / kembali subrutin dan penanganan interupsi, tetapi menyulitkan jika tidak mungkin untuk menyimpan data (variabel) di sana, dan menerapkan tumpukan data perangkat lunak murni akan sangat tidak efisien. 8051 adalah salah satu contoh klasik, dan PIC low-end (PIC12 / PIC16) adalah contoh lain. Pada mesin ini, tumpukan data ditiru dengan menetapkan lokasi penyimpanan statis untuk variabel otomatis, dengan jumlah penggunaan kembali lokasi ini yang bergantung pada kecanggihan kompiler.
Perhatikan bahwa jika emulasi tumpukan dilakukan dengan cara ini, itu berarti rekursi - suatu fungsi yang memanggil dirinya sendiri, baik secara langsung maupun tidak langsung - tidak berfungsi, karena setiap instance fungsi menggunakan kembali lokasi statis yang sama untuk variabel yang seharusnya "pribadi". Beberapa kompiler memungkinkan penggunaan rekursi yang terbatas (biasanya diimplementasikan dengan cara #pragma
tertentu), yang akan menyebabkannya membuat tumpukan data yang benar, tidak peduli berapa banyak memperlambatnya.
Selain itu, ada arsitektur CPU yang tidak memiliki setumpuk perangkat keras sama sekali, bahkan untuk penanganan subrutin / interupsi, termasuk DEC PDP-8 dan IBM System / 360. Pada mesin-mesin ini, PC (alamat pengirim) dan register status (untuk gangguan) disimpan dalam register atau lokasi memori, tetapi dalam setiap contoh yang dapat saya pikirkan, mesin juga memiliki mode alamat yang cukup fleksibel yang membuatnya mudah untuk membuat stack. dengan perangkat lunak.