Сообщение 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>Иными словами, взять указатель на первую переменную в секции. Для надежности можно сбросить 12 младших бит в указателе, хотя (сейчас попробовал) они и так сброшены.
PD>Кстати, ты зря думаешь, что hInstance = 0x00400000. Начиная с Vista, он где угодно может быть
Спасибо, понял в чём ошибка. У меня секция была в отдельном cpp файле, который имел h файл с extern.
Так вот Адрес начала секции равен адресу присваиваемому первой переменной extern вне зависимости от её положения в секции
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>Иными словами, взять указатель на первую переменную в секции. Для надежности можно сбросить 12 младших бит в указателе, хотя (сейчас попробовал) они и так сброшены.
PD>Кстати, ты зря думаешь, что hInstance = 0x00400000. Начиная с Vista, он где угодно может быть
Спасибо, понял в чём ошибка. У меня секция была в отдельном cpp файле, который имел h файл с extern.
Так вот Адрес начала секции равен адресу присваиваемому первой переменной extern вне зависимости от её положения в секции
Но это укзатель на данные секции. А мне интересен адрес заголовка секции
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 вне зависимости от её положения в секции
Но это укзатель на данные секции. А мне интересен адрес заголовка секции