Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

linker и сегмент неинициализированных данных

4.6K
16 мая 2004 года
The Lich
14 / / 26.03.2004
У меня в Developer studio 97, Visual C++ 5.0 есть проект. В нем несколько исходников на C++, связанных друг с другом include'ами. И есть исходник на ассемблере, который компилируется tasm32 в Custom Building'е. В этом исходнике определены два сегмента данных:

_dat SEGMENT BYTE PUBLIC USE32 'DATA'
ASSUME ds:_dat

Инициализированные данные

_dat ENDS

и

_udat SEGMENT BYTE PUBLIC USE32 'DATA?'
ASSUME ds:_dat

PUBLIC _Array
_Array DB 1000000 dup (0)

_udat ENDS

Первый сегмент - инициализированные данные, они включаются в obj. Второй сегмент - неинициализированные данные, они не должны включаться в obj и exe файлы.
Когда я компилировал и linker'ил эти исходники на Watcom C (и на tasm32), все было OK.
Но вот я решил пересесть на Visual C++ и писать под Windows. Tasm32 нормально отассемблировал этот исходник. Но когда полученный им obj встретил linker Visual C++, он:
1). Сообщил:
"warning LNK4033: converting object format from OMF to COFF"
2). До-о-олго тормозил. (Точнее, долго тормозил он перед пунктом 1)
3). Сделал мой exe'шник размером больше мегабайта.
Я так понимаю, он весь этот Array, заполненный нулями, включил в exe'шник. Зачем?????????????????????????????????????
Подскажите, пожалуйста, как сказать ему, чтобы он нормально обрабатывал сегмент неинициализированных данных.
4.6K
17 мая 2004 года
The Lich
14 / / 26.03.2004
Все, понял, как. Нужно описывать сегмент так:

_BSS SEGMENT PARA PUBLIC USE32 'BSS'
PUBLIC _Array
_Array DB 1000000 dup (?)
_BSS ENDS

Тогда и тормозить не будет и размер будет нормальный. BSS - сегмент неинициализированных данных компилируемого модуля.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог