Реализация процедур-подпрограмм.
Путь наверх.
Понятие подпрограммы как выделенного фрагмента программы, реализующего некую операцию – первый в программировании пример структуризации, разделения логики и реализации. Первые языки высокого уровня – Fortran и Basic – базировались именно на идее языка программирования как набора стандартных подпрограмм.
Пример: вызов и возврат.
Рассмотрим частный случай процедуры без параметров.
Procedure Proc;
begin
z:=x+y; proc
end;
|
……. Vozvrat^
End.
{подготовка возврата}
вызов
возврат
Положить в vozvrat адрес следующей после goto команды:
Vozvrat:=ThisAddr+cLenGoto, где cLenGoto – длина команды goto.
{Выразить через бинарное присваивание}
vozvrat:=ThisAddr;
vozvrat:=vozvrat+cLenGoto
goto prog; {подпрограмма вызывается только явным образом – первой выполняется первая команда основной программы}
proc: {z:=x+y}
z:=x;
z:=z+y;
goto vozvrat^;
prog: … goto proc …® vozvrat:=ThisAddr;
vozvrat:=vozvrat+cLenGoto; goto proc; {главная программа}