新しい関数を呼び出したり、ジャンプ テーブルを作成したりする代わりに、(パフォーマンスを向上させるために) インスタント ジャンプを実行したいと考えています。このコードがコンパイラで機能する理由はわかりませんが、適切にジャンプできません:
__asm mov eax, __cmd
__asm jmp eax //Crash!
__cmd :
//Some code
私は2番目の方法を試しました.それもコンパイルされますが、動作しません:
int address = 10;
__asm jmp (__cmd + address) //Crash!
__cmd :
var += value;return;
var -= value;return;
var *= value;return;
var /= value;return;
var %= value;return;
ただし、定数でのみ機能します。
__asm jmp (__cmd + 10) //works
間接ジャンプを実装するとプログラムがクラッシュするのはなぜですか? そして、とにかくこの問題を解決する方法はありますか?