Nios II Gen2 プロセッサー・リファレンス・ガイド

ID 683836
日付 10/28/2016
Public
ドキュメント目次

7.5.2. 戻り値

r2r3には最大 8 バイトの型の戻り値が返されます。8 バイト以上の戻り値の場合、呼び出し元は結果にメモリーを割り当てる必要があり、結果メモリーのアドレスを隠しゼロ引数として渡す必要があります。

隠しゼロ引数は、例を使って説明するのが一番です。

構造体返し


/* b() computes a structure-type result and returns it */
STRUCT b(int i, int j)
{
   ...
   return result;
}
void a(...)
{
   ...
   value = b(i, j);
}

上記の例では、結果の型が 8 バイト以下の場合、b()は結果をr2r3に返します。

戻り型が 8 バイトより大きい場合、Nios II C/C++ コンパイラーはa()b()へのポインターを渡したかのようにこのプログラムを処理します。下の例は、Nios II C/C++ コンパイラーが上記の構造体返しのコードでどのようにコードを見ているかを示しています。

構造体返しは 8 バイト以上


void b(STRUCT *p_result, int i, int j)
{
   ...
   *p_result = result;
}

void a(...)
{
   STRUCT value;
   ...
   b(&value, i, j);
}