Информация об изменениях

Сообщение Re[2]: Получения адреса секции в msvc от 17.10.2018 11:59

Изменено 17.10.2018 12:03 reider

Re[2]: Получения адреса секции в msvc
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Здравствуйте, reider, Вы писали:


R>>Есть ли более человеческий способ?


PD>А такое не пойдет ?


PD>
PD>#pragma data_seg(".1111")
PD>int x = 5;
PD>#pragma data_seg()

PD>int main()

PD>{
PD>    int * px = &x;
PD>}
PD>


PD>Иными словами, взять указатель на первую переменную в секции. Для надежности можно сбросить 12 младших бит в указателе, хотя (сейчас попробовал) они и так сброшены.


PD>Кстати, ты зря думаешь, что hInstance = 0x00400000. Начиная с Vista, он где угодно может быть




Спасибо, понял в чём ошибка. У меня секция была в отдельном cpp файле, который имел h файл с extern.
Так вот Адрес начала секции равен адресу присваиваемому первой переменной extern вне зависимости от её положения в секции
Re[2]: Получения адреса секции в msvc
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Здравствуйте, reider, Вы писали:


R>>Есть ли более человеческий способ?


PD>А такое не пойдет ?


PD>
PD>#pragma data_seg(".1111")
PD>int x = 5;
PD>#pragma data_seg()

PD>int main()

PD>{
PD>    int * px = &x;
PD>}
PD>


PD>Иными словами, взять указатель на первую переменную в секции. Для надежности можно сбросить 12 младших бит в указателе, хотя (сейчас попробовал) они и так сброшены.


PD>Кстати, ты зря думаешь, что hInstance = 0x00400000. Начиная с Vista, он где угодно может быть




Спасибо, понял в чём ошибка. У меня секция была в отдельном cpp файле, который имел h файл с extern.
Так вот Адрес начала секции равен адресу присваиваемому первой переменной extern вне зависимости от её положения в секции

Но это укзатель на данные секции. А мне интересен адрес заголовка секции