Реализация процедур-подпрограмм.

Путь наверх.

Понятие подпрограммы как выделенного фрагмента программы, реализующего некую операцию – первый в программировании пример структуризации, разделения логики и реализации. Первые языки высокого уровня – Fortran и Basic – базировались именно на идее языка программирования как набора стандартных подпрограмм.

Пример: вызов и возврат.

Рассмотрим частный случай процедуры без параметров.

Procedure Proc;

begin

z:=x+y; proc

end;

goto
Begin

……. 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; {главная программа}