В этой статье не процитировать какие - либо источники . ( декабрь 2009 г. ) ( Узнайте, как и когда удалить этот шаблон сообщения ) |
В программировании сайт вызова из функции или подпрограмм расположение (строка коды) , где называется функция (или может быть вызвана через динамическую диспетчеризацию ). Место вызова - это место, где функции передается ноль или более аргументов и принимается ноль или более возвращаемых значений .
Пример [ править ]
// это функция '' определение '' function sqr ( x ) { return x * x ; }
function foo () { // это два сайта вызова функции sqr в этой функции a = sqr ( b ); c = sqr ( b ); }
Пример ассемблера [ править ]
* ( Обычно ) внешний вызов .... R13 обычно точки в виде экономии площади для общего назначения регистров заранее * и R1 точек в виде списка из адресов из параметров ( если любой ) LA R1 , = ( B ) точки на ( адрес из ) переменная ' B ' L R15 , = ( SQR ) Загрузить указатель ( адрес постоянная ) в отдельно компилируется / собранной подпрограмма BALR R14 , R15 Перейти к подпрограмме , которая возвращается - как правило , при нулевом смещении на R14 * внутренний вызов ( как правило , гораздо меньше накладных и , возможно , « известное » параметры ) BAL R14 , SQR Перейти к метке программы и вернуть
В некоторых случаях возврат является эффективным методом индикации успеха или неудачи. Возврат может быть выполнен путем возврата в +0 или + 4, + 8, +12 и т. д., требуя [ требуется пояснение ] небольшой таблицы переходов в точке возврата - чтобы перейти непосредственно к обработке дела (как в операторе HLL Switch ).
BAL R14 , SQR Перейти к метке программы и возврат ( используя смещение на R14 в качестве адреса возврата ) B FAIL ( RET + 0 ) - ЧТО-ТО НЕПРАВИЛЬНО * ( RET + 4 ) - OK
Однако обычно код возврата устанавливается в R15
( 0
= ОК, 4
= сбой или аналогичный ..), но требует отдельной инструкции для тестирования R15
или использования непосредственно в качестве индекса ветвления.