Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как поместить переменную в секцию кода, а не данны 
:(
    Опции темы
GreenPiece
Дата 27.1.2011, 04:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 25.1.2011

Репутация: нет
Всего: нет



Добрый день.
Как сделать так, чтобы переменная находилась в секции кода, а не данных? Причем нужно сделать так, что она была не стековой переменной, не хранилась в регистрах, а находилась именно в секции кода.
Есть в файле секции:
.textbss
.text
.rdata
.data

Если я просто объявляю переменную (int c), а потом как-то присваиваю ей значение, то компилятор делает эту переменную стековой (MOV DWORD PTR SS:[EBP-68],EAX).
Если объявляю ее как static int c, то при просмотре в IDA получается "mov $1, eax", а $1 хранится в секции .data, хотя в этой статье:http://www.rsdn.ru/article/baseserv/pe_coff.xml сказано, что "в секции .bss хранятся неинициализированные статические и глобальные переменные". .textbss и .bss как-то отличаются?
Что все-таки нужно сделать с переменной, чтобы она была в секции кода?
PM MAIL   Вверх
Earnest
Дата 27.1.2011, 08:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 53
Всего: 183



Если не ошибаюсь, только через ассемблер и db.


--------------------
...
PM   Вверх
xvr
Дата 27.1.2011, 13:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 60
Всего: 223



Цитата(GreenPiece @  27.1.2011,  04:23 Найти цитируемый пост)
Что все-таки нужно сделать с переменной, чтобы она была в секции кода? 
Сделать ее константой (и не забыть сказать компилятору, что константы надо помещать в ro секцию), тогда будет лежать вместе с кодом в одной загружаемой секции

Только учтите, что писать в такую 'переменную' не получится - секция кода закрыта по записи


PM MAIL   Вверх
EnergoHokum
Дата 27.1.2011, 16:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 600
Регистрация: 10.11.2006
Где: Россия, Ставропол ь

Репутация: нет
Всего: 6



У GCC есть такой атрибут: __attribute__ ((section (".section_name")))

Я его в программировании для x86-процессоров не применял, но для контроллеров AVR он делает именно то, что требуется -- помещает переменную в заданную секцию ELF-файла.
PM MAIL ICQ   Вверх
jonie
Дата 27.1.2011, 17:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 15
Всего: 118



#pragma section часом не поможет (раз уж идет речь про win)


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
GreenPiece
Дата 27.1.2011, 18:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 25.1.2011

Репутация: нет
Всего: нет



Спасибо, сейчас попробую.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0444 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.