Почему происходит сбой моей программы при выполнении косвенного перехода?

Я хочу сделать мгновенный переход (чтобы улучшить производительность) вместо вызова новой функции или создания таблицы переходов. Я понятия не имею, почему этот код работает на моем компиляторе, но он не может правильно перейти:

__asm mov eax, __cmd
__asm jmp eax //Crash!

__cmd :
//Some code

Я попробовал второй метод, он также компилируется, но не работает:

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

Почему происходит сбой моей программы при выполнении косвенного перехода? И есть ли способ решить эту проблему?

0

Решение

Спасибо Алексей Фрунзе. Я нашел ответ:

mov eax, offset __cmd

Это решило мою проблему. Теперь я могу косвенно реализовывать прыжки.
Спасибо за прочтение. 🙂

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]