Вот некоторые различия:
- Обычно у вас может быть только один аппаратный стек (на поток).
- Вы можете иметь столько стеков программного обеспечения, сколько пожелаете.
- Обычно аппаратный стек управляется непосредственно ЦПУ.
- Доступ к программному стеку управляется явно из кода.
- Аппаратный стек обычно напрямую связан со стеком вызовов (функции вызывающего абонента, их аргументы).
- Программный стек не зависит от аппаратного стека вызовов (вы можете вставить элемент в функцию и вставить его в другую.независимо от уровня аппаратного стека).
- Память аппаратного стека управляется ОС или ЦП (может быть ограничена).
- Память программного стека управляется приложением.
Ну, в основном оба стека имеют операции push и pop и, таким образом, работают как стек.
Было бы возможно иметь чистое или не чистое аппаратное или программное обеспечениестек.Обычно аппаратный стек может получить доступ к элементам в относительной позиции сверху для аргументов.В программном стеке обычно защита представляет собой частный доступ.
На некоторых встроенных устройствах стек может служить только для адресов возврата, и для аргументов может потребоваться программный стек.На некоторых устройствах максимальный уровень может быть очень низким.