Что находится в секциях .sdata и .sbss

Модератор: Модераторы разделов

Аватара пользователя
savigm
Сообщения: 127
ОС: openSUSE

Что находится в секциях .sdata и .sbss

Сообщение savigm »

Меня интересует: что находится в секциях .sdata и .sbss elf-файла. Архитектура MIPS. Нашел некоторое описание:
.sdata
This section holds initialized short data that contribute to the
program memory image. See "Global Data Area" below for de-
tails.
.sbss
This section holds uninitialized short data that contribute to the
program memory image. By definition, the system initializes
the data with zeros when the program begins to run. See "Glo-
bal Data Area" below for details.

Т.е. это какие-то короткие данные, но суть мне не понятна, что из программы туда попадет и почему?
Спасибо сказали:
Аватара пользователя
RasenHerz
Сообщения: 1341
ОС: Arch Linux amd64

Re: Что находится в секциях .sdata и .sbss

Сообщение RasenHerz »

http://www.oit.uci.edu/dcslib/digital_unix...TE/DOCU_012.HTM

Из Wiki:
Some compilers/architectures also support the SBSS segment for "small data". Typically these data items can be accessed by leaner code using instructions that can only access a certain range of addresses.
Спасибо сказали:
Аватара пользователя
savigm
Сообщения: 127
ОС: openSUSE

Re: Что находится в секциях .sdata и .sbss

Сообщение savigm »

Small adressable sections

.sdata

This section stores initialised data that are addressable via small data area pointers (%a0)
.sbss

Location of non-initialised data. Addressing is effected via small data area pointers %a0
.sdata.rodata

Location of read-only data that can be small adressed


Вот что еще нашел, видимо sdata и sbss - секции где хранятся данные, которые как-то коротко адресуются, т.е. наверно имеется ввиду относительная адресация.
Спасибо сказали:
Аватара пользователя
Portnov
Модератор
Сообщения: 1786
Статус: Матёрый линуксоид
ОС: Debian testing/unstable

Re: Что находится в секциях .sdata и .sbss

Сообщение Portnov »

Я не очень понял, что значит в данном контексте small addressed... Сегмент .sdata хранит инициализированные данные (т.е. данные, которые уже известны на момент компиляции); .sbss - неинициализированные (насколько я понимаю, в исполнимом файле он должен только упоминаться, а места не занимать) - это место под данные, которые станут известны только во время выполнения программы.
Работа: Ubuntu 9.10
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
Спасибо сказали: