Как я могу статически сказать Visual C ++ разместить глобальную переменную по указанному абсолютному адресу в памяти, например, что __attribute__((at(address)))
делает?
Это может быть сделано, но я не верю, что существует заранее определенный способ сделать это, поэтому потребуются некоторые эксперименты. Несмотря на то, что я не вижу большой пользы, если вы создадите свою переменную во время выполнения только в начале выполнения пользовательского кода.
Итак, сначала укажите раздел / сегмент, где следует инициировать вашу переменную, используя выделять МИЗ конкретный спецификатор. Затем либо запустите ваше приложение в реальном сценарии, дамп или отладьте его и посмотрите, где появляется ваша переменная. Следите за перемещениями (есть несколько способов добиться принудительного переселения, но они не гарантированы, что будут соблюдаться постоянно). Другой способ — использовать некоторый код в вашем приложении. как это один, чтобы найти адрес раздела, который вы определили.
Если вы по какой-то причине не можете получить последовательное поведение, вы можете использовать эта утилита манипулировать виртуальным адресом вашего объектного файла. В целом, кроме препятствий на пути, но в целом я не понимаю, почему вы не сможете заставить его работать на ваш конкретный сценарий если вы достаточно настойчивы.
Других решений пока нет …