Передача параметров подпрограмм в регистрах

В CISC-процессорах параметры в процедуры обычно передаются через программный стек (в памяти) в порядке, согласованном между вызываемой и вызывающей процедурами. Наличие большого регистрового файла в большинстве RISC-процессоров позволяет передавать часть параметров через регистры (Passing Parameters in Registers, PPIR). Такой подход обычно повышает производительность программы как при передаче параметров (не нужно обращаться к памяти, чтобы затолкнуть операнды в стек), так и при обращении к ним в вызванной подпрограмме (не нужно обращаться к памяти, чтобы прочитать операнды в стеке; к тому же операции могут выполняться непосредственно над полученными регистрами).

Обычно для передачи параметров используется не больше определенного количества регистров (например, трех). Все остальные операнды передаются через стек.

Есть ситуации, когда передача параметров через стек реально может привести к замедлению выполнения программы. Организация сложных вычислений требует использования большого числа регистров и для передачи параметров в подпрограмму может просто не хватить свободных регистров. В этом случае регистры будут сохранены в памяти и восстановлены после возврата из подпрограммы, что, естественно, потребует дополнительных операций доступа к памяти. К счастью, такой сценарий для большинства современных RISC-процессоров является нетипичным.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: