9.1.4 戻り値

(1)

戻り値の受け渡しに利用可能なレジスタ

戻り値の受け渡しに利用可能なレジスタはAX,BC,およびDEです。

(2)

戻り値,または戻り値へのポインタのレジスタ,およびスタック割り付け

戻り値,または戻り値へのポインタのレジスタ,およびスタック割り付けは,以下のようになります。

-

サイズが5バイト以上の戻り値の場合,戻り値へのポインタをnearポインタとして第1引数に設定されます。
すなわち,戻り値には第1引数としての受け渡し規則が適用されます。これに伴い,プログラム上で指定された第n引数(n=1,…,N)には第n+1引数としての受け渡し規則が適用されます。
詳細は「9.1.3 実引数の受け渡し」を参照してください。

-

サイズが4バイト以下の戻り値はレジスタに割り付けられます。

-

farポインタのレジスタ割り付け方法に関しては,「9.1.3 実引数の受け渡し」を参照してください。

-

メンバがfarポインタのみから構成されるサイズが4バイトの構造体,または共用体は,farポインタ以外と見なされます。

-

サイズが4バイト以下の戻り値のレジスタ割り付け規則を以下の表に示します。

戻り値のサイズ

割り付けるレジスタ

1バイト

A

2バイト

AX

3バイト

C-AX

4バイト

farポインタ: A-DE

farポインタ以外: BC-AX

 

この表で“-”は,8ビット,または16ビット・レジスタとほかの16ビット・レジスタを結び付ける記号です。

各戻り値のレジスタへの割り付けは,戻り値を構成するバイトのアドレス降順(大きいアドレスから小さいアドレスの順)が上記の表に指定されたレジスタの指定順(左から右の順)に一致するように割り付けられます。

注意

4バイト以下の構造体や共用体はレジスタに割り付ける候補となります。