Вот цитата из книги «Введение в ассемблере» о РНЦ (против CISC)RISC против стека CISC
В MIPS, мы могли бы написать процедуры без использования стека. Для большинства обычных процедур нам не нужно использовать стек. Доступность большого количества регистров позволяет использовать регистрацию на основе регистров. Однако, когда мы пишем рекурсивные процедуры, мы должны использовать стек. .
Я очень смущен магией с работой без стека. Любая стандартная программа имеет цепную вызовы: Main() -> FUNCTION1() -> Function2() -> ... ->
Даже с большим количеством регистров (128) путь обычно:
- решить, какие регистры следует принимать и сохранять их контекст (обычно толкая на стеке)
- обеспечивают операции
- возвращение регистров состояния (обычно выскакивающие из стека)
Никто не останавливает нас, чтобы использовать регистрационный параметр, проходящий в CISC, особенно на современных процессорах. Итак, как можно сделать программу с RISC без стека?
цитата вы предоставили только упоминает процедуры написания процедур без использования стека, а не целые программы. Но если ваша программа достаточно проста, вы пишете в сборке, и у вас достаточно регистров, тогда вы можете вручную назначить регистр каждой переменной и параметру. Вероятно, вы все равно в конечном итоге используете стек для обратного адреса любых jsrs/calls/isrs и т. Д. – tinman