В программировании местом вызова функции или подпрограммы является место (строка кода) , где функция вызывается (или может быть вызвана посредством динамической диспетчеризации ). Место вызова — это место, где функции передается ноль или более аргументов и принимается ноль или более возвращаемых значений .
// это определение функции function sqr ( x ) { return x * x ; }
function foo () { // это два места вызова функции sqr в этой функции a = sqr ( b ); с = площадь ( б ); }
IBM/360 или Z/Архитектура
* ( обычно ) внешний вызов .... R13 обычно заранее указывает на область сохранения регистров общего назначения * и R1 указывает на список адресов параметров ( если есть ) LA R1 , = A ( B ) указывает на ( адрес ) переменная ' B ' L R15 , = A ( SQR ) Загрузить указатель ( константу адреса ) на отдельно скомпилированную / собранную подпрограмму BALR R14 , R15 Перейти к подпрограмме , которая возвращает - обычно при нулевом смещении на R14 * внутренний вызов ( обычно гораздо меньшие накладные расходы) и, возможно , « известные » параметры ) BAL R14 , SQR Перейти к метке программы и вернуться
В некоторых случаях возврат является эффективным методом обозначения успеха или неудачи. возврат может быть выполнен путем возврата в +0 или +4,+8, +12 и т. д., требуя кода, например небольшой таблицы ветвей , в точке возврата - чтобы перейти непосредственно к обработке дела (как в операторе HLL Switch ) .
BAL R14 , SQR Перейти к метке программы и вернуться ( используя смещение на R14 в качестве адреса возврата ) B OK ( RET + 0 ) – OK * ( RET + 4 ) – Сбой
Традиционно, однако, код возврата устанавливается в R15
( 0
=OK, 4
= отказ или аналогичный ..), но требует отдельной инструкции для проверки R15
или использования непосредственно в качестве индекса ветвления.