Oracle Solaris Studio 12.2: C ユーザーガイド

F.3.3 x86/x64

Intel 386 psABI および AMD64 psABI を遵守しています。

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

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

レジスタ  

返される型  

int 

%eax 

long long

%edx%eax

floatdoublelong double

%st(0)

float _Complex

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

double _Complexlong double _Complex

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

詳細は、http://www.x86-64.org/documentation/abi.pdfで AMD64 psABI についての説明を参照してください。

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

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

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