2009年4月14日火曜日

関数の呼び出し規約に縛られないラッパーDLLを作る

関数の呼び出し規約に縛られないラッパーDLLを作る

これは面白い!
なにかの時に役に立ちそう。

「特攻する別exeを作って生き残った方で呼び出す(笑)」ここは何度読んでも笑える。

要点は
  • インラインアセンブラで自前でスタック調整
  • コンパイルオプションなどによっては、最適化されてしまってまずい事になるのを予防する
という2点。

スタック調整
unsigned long reg_esp;
asm { mov reg_esp, esp }
// 関数呼び出し
asm { mov esp, reg_esp }

詳しいことは元ネタを参照。

「問題ある部分をDLLとして切り分ける」ことが、なぜ「最適化でまずいことになるのを予防する」につながるのかな?

「切り分けしたDLLが問題ないことがわかったらリビルドはしないで使い回すことができる」から?

0 件のコメント:

コメントを投稿