Sun Studio 12: C ユーザーズガイド

F.3.1.1 64 ビット SPARC

すべての整数の引数は、8 バイト値として引き渡されます。

浮動小数点引数は可能なかぎり、浮動小数点レジスタに渡されます。

(x86)

関数は次のレジスタで結果を返します。

表 F–21 型を返すために x86 関数が使用するレジスタ

レジスタ 

返される型 

int 

%eax 

long long

%edx と %eax

float、double、long double

%st(0)

float _Complex

%eax (実数部) と %edx (虚数部)

double _Complex と long double _Complex

対応する浮動小数点型の 2 つの要素を含む構造体と同じ 

struct、union、long long、double、long double を除くすべての引数は 4 バイト値として渡されます。 long long は 8 バイト値として、double は 8 バイト値として、また long double は 12 バイト値としてそれぞれ渡されます。

struct と union はスタックにコピーされます。サイズは 4 の倍数バイトに丸められます。struct と union を返す関数は、その struct や union を格納する場所を指す隠された最初の引数に渡されます。

関数から戻ったあと、スタックから引数をポップするのは呼び出し側の責任です。呼び出された関数によってポップされる struct や union の余分な引数を除きます。