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); }