Есть штук 20-30 написанных в C++ функций. Или методов классов (ну, функция с аргументом this по-сути).
Хочется в рантайме сгенерить кусок машинного кода, который чуть более чем полностью будет представлять собой длинную череду (штук 1000) вызовов этих 20-30 функций и выполнить этот код.
Вопросы:
1) Как можно в принципе передать управление на любые сгенерённые данные? Сегменты кода же защищены обычно от записи, а у сегментов данных нет флажка executable... Так взлетит?
char *code = new char[1024];
// my machine code
memset(code, 123, 1024);
int (*bugaga)(int, int);
// скастить вероломно, ага
bugaga = code;
// вызовем
int result = (*bugaga)(100, 500);
2) Как узнать адреса методов, адреса которых я могу употреблять в своём динамически генеримом машинном коде? Динамический линкинг же всякий там...