引数割り付けの具体例を示します。なお、アドレスは全ての図で右から左に向かって増加します(左側が上位アドレス)。
例 1. | レジスタ渡しの対象の型である引数は、宣言順にレジスタR1〜R4に割り付けます。
途中でレジスタ渡しとならない引数があった場合、それ以降の引数はレジスタ渡しの対象となります。スタック上では、その引数の境界調整数に補正したアドレスに配置されます。 |
例 2. | サイズが16バイト以下、かつ4の倍数である構造体および共用体型の引数は、レジスタ渡しの対象となります。それ以外の構造体および共用体型の引数は、スタック渡しとなります。 |
例 3. | 関数原型により可変個の引数を持つ関数として宣言している場合、対応する型のない引数およびその直前の引数は、宣言順にスタック渡しになります。 |
例 4. | 関数の返す型が16バイトを超える、または4の倍数でないサイズの構造体または共用体型の場合、R15にリターン値アドレスを設定します。 |
例 5. | リターン値をメモリに設定する場合、通常例4のようにスタックを確保して設定しますが、リターン値を変数に設定する場合、スタックを確保せず、その変数のメモリ領域に直接設定します。この場合、R15にはその変数のアドレスを設定します。 |