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