Loading article…
プログラミングにおいて、関数またはサブルーチンの呼び出しサイトとは、関数が呼び出される(または動的ディスパッチを通じて呼び出される)場所(コード行)のことです。呼び出しサイトとは、0個以上の引数が関数に渡され、0個以上の戻り値が受け取られる場所です。[1] [2]
例
// これは関数の「定義」です。
function sqr ( x ) { return x * x ; }
function foo () { // これらはこの関数内の関数 sqr の 2 つの呼び出しサイトです。a = sqr ( b ); c = sqr ( b ); }
アセンブラの例
* (通常)外部呼び出し.... R13 は通常、汎用レジスタの保存領域を事前に指します。 * R1 は、パラメータ(ある場合)のアドレスのリストを指します。LA R1 、= A ( B )は、変数' B ' (のアドレス)を指します。L R15 、= A ( SQR )別途コンパイル/アセンブルされたサブルーチンへのポインタ(アドレス定数)をロードします。BALR R14 、R15サブルーチンに移動します。通常、R14でゼロ変位に戻ります。*内部呼び出し(通常、オーバーヘッドははるかに小さく、パラメータは「既知」である可能性があります) BAL R14 、SQRプログラムラベルに移動して戻ります。
場合によっては、return は成功または失敗を示す効率的な方法です。return は、+0 または +4、+8、+12 などで戻ることによって実行できます。この場合、戻りポイントで、ケースを直接処理するために、たとえば小さな分岐テーブルなどのコードが必要になります ( HLL Switch ステートメントの場合など)。
BAL R14 , SQRプログラムラベルに移動して戻ります(戻りアドレスとしてR14のオフセットを使用)B OK (RET + 0 )- OK * (RET + 4 )-失敗
ただし、従来は戻りコードが設定されますR15( 0=OK、4=失敗など) が、テストしR15たり分岐インデックスとして直接使用したりするには別の命令が必要になります。
参照
参考文献
- ^ 「一般 | サブルーチン」。Codecademy 。 2024年9月12日閲覧。
- ^ 「第7章 - サブルーチン」www.neurobs.com . 2024年9月12日閲覧。
