Я пытаюсь использовать этот код для выделения фрагмента кода в независимом разделе:
#ifdef _MSC_VER
#pragma section(".evil",execute)
#pragma code_seg(".evil")
#endif
#ifdef __GNUC__
static __attribute__((section (".evil")))
#elif defined _MSC_VER
static __declspec(allocate(".evil"))
#endif
void __invoke__start()
{//...
Но это не работает, и компилятор говорит
Синтаксис __declspec (allocate ()) можно использовать только для статических данных.
Я делаю это, потому что мне нужно написать некоторый код в новый файл, и этот файл является исполняемым файлом.
На самом деле я не могу найти способ получить точный адрес функции в памяти при запуске программы, если программа скомпилирована с режимом отладки MS VC ++.
Для полного примера, пожалуйста, смотрите этот код: полный пример
Теперь, вышеупомянутая проблема была решена, но я все еще хочу прояснить, что, если возможно, поместить некоторый код в независимый раздел. В конце концов, для моей работы есть и другое преимущество.
Когда я связываю два объектных файла (формат COFF), как я могу убедиться, что разные коды из разных файлов obj будут в разных разделах?
Или есть другой способ сделать это?
Мне очень жаль мой плохой английский.