10.19 __value_in_regs

__value_in_regs 修飾子は、最大 4 つの整数ワードからなる構造体、または最大 4 つの float または double を、メモリを使用するのではなく、それぞれ整数レジスタと浮動小数点レジスタで返すようにコンパイラに指示します。

__value_in_regs は、関数修飾子です。これは、関数の型に影響します。

構文

__value_in_regs return-type function-name([argument-list]);
各項目には以下の意味があります。
戻り値の型
最大 4 ワードのサイズまでの構造体の型を指定します。

使用法

関数 __value_in_regs の宣言は、複数の結果を返す関数を呼び出すときに便利です。

制約条件

構造体のコピーを作成する必要がある場合、C++ 関数では __value_in_regs 構造体を返すことはできません。
__value_in_regs として宣言された仮想関数がオーバーライドされる場合、オーバーライドする関数も __value_in_regs として宣言する必要があります。関数が一致しない場合、コンパイラによってエラーが生成されます。

エラー

__value_in_regs によって修飾される関数で返される構造体が大きすぎる場合、警告が生成され、__value_in_regs 構造体は無視されます。

typedef struct int64_struct
{
    unsigned int lo;
    unsigned int hi;
} int64_struct;
__value_in_regs extern 
    int64_struct mul64(unsigned a, unsigned b);
関連する概念
5.16 レジスタを介して関数から構造体を返す
非機密扱いPDF file icon PDF 版ARM DUI0472LJ
Copyright © 2010-2015 ARM.All rights reserved.