Разница между программными и аппаратными стеками заключается в их природе и назначении:
- Программный стек — это пользовательская модель (структура) данных. prog-cpp.ru Он используется для обхода структур данных, например, дерева или графа. ru.wikipedia.org
- Аппаратный стек (машинный стек) используется для нужд выполняющейся программы: хранения переменных и вызова подпрограмм. ru.wikipedia.org При вызове подпрограммы процессор помещает в стек адрес команды, следующей за командой вызова подпрограммы («адрес возврата») из подпрограммы. ru.wikipedia.org По команде возврата из подпрограммы из стека извлекается адрес возврата в вызвавшую подпрограмму программу и осуществляется переход по этому адресу. ru.wikipedia.org
Таким образом, аппаратный стек управляется непосредственно процессором, а доступ к программному стеку управляется явно из кода. stackoverflow.com Кроме того, память аппаратного стека управляется операционной системой или процессором, а память стека программного обеспечения управляется приложением. stackoverflow.com