Метод Уиллера
Для осуществления передачи управления обратно на основную программу в подпрограмме должно быть указано, в форме текущей переменной, содержимое счетчика устройства управления (счетчика команд) в момент передачи управления на подпрограмму. Для тех машин, в системе команд которых нет специальной команды обращения, содержимое счетчика команд должно рассматриваться как программный параметр.

Этот стандартный метод предварительной подготовки требует выполнения следующих подготовительных операций:
1. Команда записывается в стандартную ячейку (если машина одноадресная, она засылается в арифметическое устройство), причем записывается обычно та самая команда, по которой выполняется эта запись (команда посылает саму себя в арифметическое устройство).
2. С записанной командой складывается константа (обычно содержащая число три в разрядах, соответствующих адресной части команды), составленная таким образом, что в результате формируется команда обратной передачи управления (выхода из подпрограммы).
3. Обращение к подпрограмме осуществляется обычной командой передачи управления.
В ходе выполнения указанных операций формируется команда передачи управления, в своей адресной части содержащая адрес той команды, на которую должно быть передано управление после окончания выполнения подпрограммы. При описываемом методе первая команда подпрограммы должна быть командой засылки сформированной указанным способом команды передачи управления в ту ячейку, где в подпрограмме должна находиться команда выхода.
Этот метод может быть применен только в том случае, если в системе команд машины имеется специальная операция для выполнения такой подготовки. Эти операции имеются, например, в машинах Вихрь I (одноадресная) и МИДАК (трехадресная).
Источник: delete-it