レジスタを介して複数の値を返す関数

C および C++ では、構造体を使用すると、1 つの関数から複数の値を返すことができます。通常、構造体はスタックを使用して返され、それに伴うコストも発生します。

メモリトラフィックを削減し、コードサイズを縮小するため、コンパイラには、1 つの関数からレジスタを介して複数の値を返す機能が用意されています。関数を __value_in_regs で修飾すると、その関数から最大 4 ワードを struct で返すことができます。以下に例を示します。

typedef struct s_coord { int x;	 int y;	 } coord;	
coord reflect(int x1, int y1) __value_in_regs;

複数の値を 1 つの関数から返す必要がある場合は、いつでも __value_in_regs を使用できます。以下はその例です。

Show/hide関連項目

Copyright © 2010 ARM. All rights reserved.ARM DUI 0472BJ
Non-ConfidentialID011811