stringtranslate.com

Позвонить на сайт

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

Пример

 // это определение функции 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или использования непосредственно в качестве индекса ветвления.

Смотрите также

Рекомендации