OPTLINK 規則には以下の機能があります。
- パラメーターは、スタック上で右から左へプッシュされる。
- 呼び出し側は、スタックをクリーンアップする。
- 汎用レジスター EBX、EDI、および ESI は、呼び出しを超えて、保持される。
- 汎用レジスター EAX、ECX、および EDX は、呼び出しを超えて、保持されない。
- 浮動小数点レジスターは、呼び出しを超えて、保持されない。
- 左端の字句である 3 つの規格合致パラメーター (規格合致パラメーターは、すべての BYADDR パラメーターのアドレス、および次の BYVALUE パラメーターです。ポインター、ハンドル、序数、オフセット、限定エントリー、実固定バイナリー、character(1)、および 1 バイト以下を占有する非変化ビット。) は、3 つの非保持汎用レジスターで受け渡される。
- 最大 4 つの実浮動小数点または 2 つの複合パラメーター (最初の 4 つの字句) は、浮動小数点レジスター・スタックにおいて、拡張精度フォーマット (80 ビット) で受け渡される。
- レジスターで受け渡されないすべての規格合致パラメーター、およびすべての規格合致外パラメーターは、80386 スタック上で受け渡される。
- レジスターにおけるパラメーター用のスペースはスタック上で割り当てられるが、パラメーターはそのスペースにはコピーされない。
- 規格合致戻り値は EAX に戻される。
- 実浮動小数点戻り値は、拡張精度フォーマットで、浮動小数点スタックの一番上の
レジスターに戻される。
- 複合浮動小数点戻り値は、拡張精度フォーマットで、浮動小数点スタックの
一番上の 2 つのレジスターに戻される。
- 外部関数を呼び出す場合、浮動小数点レジスター・スタックには、入り口上の有効なパラメーター・レジスター、および出口上の有効な戻り値のみが含まれる。
- 集合を戻す関数は、呼び出し側によって決まるストレージ域のアドレス
を、隠しパラメーターとして受け渡す。この区域は戻された集合になる。この集合の
アドレスは EAX に戻される。
- 方向フラグは、関数の入り口上、および関数からの出口上で、クリアする必要がある。
その他のフラグの状態は、関数への入り口上では無視され、出口上では定義されない。
- コンパイラーは、浮動小数点制御レジスターの内容を変更しない。特定の操作について、制御レジスターの内容を変更したい場合は、変更する前に内容を保管し、操作の後にそれらをリストアします。
|
This information center is powered by Eclipse technology. (http://www.eclipse.org)