Как разместить переменную по указанному абсолютному адресу в памяти (с помощью Visual C ++)

Как я могу статически сказать Visual C ++ разместить глобальную переменную по указанному абсолютному адресу в памяти, например, что __attribute__((at(address))) делает?

4

Решение

Это может быть сделано, но я не верю, что существует заранее определенный способ сделать это, поэтому потребуются некоторые эксперименты. Несмотря на то, что я не вижу большой пользы, если вы создадите свою переменную во время выполнения только в начале выполнения пользовательского кода.

Итак, сначала укажите раздел / сегмент, где следует инициировать вашу переменную, используя выделять МИЗ конкретный спецификатор. Затем либо запустите ваше приложение в реальном сценарии, дамп или отладьте его и посмотрите, где появляется ваша переменная. Следите за перемещениями (есть несколько способов добиться принудительного переселения, но они не гарантированы, что будут соблюдаться постоянно). Другой способ — использовать некоторый код в вашем приложении. как это один, чтобы найти адрес раздела, который вы определили.

Если вы по какой-то причине не можете получить последовательное поведение, вы можете использовать эта утилита манипулировать виртуальным адресом вашего объектного файла. В целом, кроме препятствий на пути, но в целом я не понимаю, почему вы не сможете заставить его работать на ваш конкретный сценарий если вы достаточно настойчивы.

1

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

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

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