3

詳細に立ち入ることなく、Cコードからの非標準の呼び出し規約を利用する必要があるとしましょう。この規則を使用する関数は、スタック上で複数の値を返す場合があります。インラインアセンブリを使用して呼び出しを行うラッパーに各関数を配置し、ラッパーに指定されたポインターパラメーターを介して出力を送信するのは簡単です。残念ながら、このソリューションは一般化されていないため、一般的なケースで機能するものが必要です。ただあきらめてマクロを使用してラッピングをカプセル化する必要がありinvokeますか、それとも、スタックを管理するという汚い作業を処理する可変個引数関数を作成するためのより一般的な方法がありますか?

4

1 に答える 1

3

どちらのアプローチを選択する場合でも、アセンブリでラッパーを作成する必要があります。invokeCのスタックをいじる方法はありません。すべての汚い作業を行う単一のラッパー(asm)を作成し、それをCでラップするというあなたのアイデアが好きです。

于 2010-10-26T02:35:35.600 に答える