· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.WIN32 —› .data? в FASM`e

Посл.отвђт Сообщенiе


Дата: Авг 18, 2004 11:04:39

Добрые люди!
Подскажите, как нужно объявлять секцию неинициализированных данный в фасме? Спасибо.


Дата: Авг 18, 2004 13:03:47

Смотри исходники fasmw.asm


Дата: Авг 18, 2004 17:02:03

Посмотрел...
Во, как надо:
section '.udata' readable writeable
Но только перед кодом, иначе не работает.


Дата: Авг 18, 2004 17:16:43

На самом деле можно даже не объявлять, а располагать неинициализированные данные после инициализированных в .data, причем строго после.


Дата: Авг 18, 2004 17:42:11

a111
> Но только перед кодом, иначе не работает.
Неверное утверждение ;-)
format PE GUI 4.0
entry start

include '%fasminc%\win32a.inc'

section '.code' code readable writeable executable

align 4
start:
  mov eax, buffer
  mov ecx, szCaption
  invoke ExitProcess, 0


section '.data' data readable writeable

szCaption   db  "bla bla bla",0

; можно раскомментарить и тоже будет работать
;section '.udata' readable writeable

buffer   rb   1000h


section '.idata' import data readable writeable

library kernel32,'KERNEL32.DLL'

include '%fasminc%\APIA\KERNEL32.INC'


Дата: Авг 18, 2004 19:56:20

Asterix
Если так делать, то размер файла будет зависеть от размера резервируемых данных.
section '.data' data readable writeable

szCaption   db  "bla bla bla",0

; если не расскоментировать, файлик будет очень большой
;section '.udata' readable writeable
buffer   rd   10000h


Дата: Авг 18, 2004 20:16:42

sensy
Я не понял что ты мне хотел возразить, естественно я проверил прежде чем постить.
Так
section '.data' data readable writeable

szCaption   db  "bla bla bla",0

;section '.udata' readable writeable

buffer   rd   10000h

размер файла получается 2048 байт

Если так
section '.data' data readable writeable

szCaption   db  "bla bla bla",0

section '.udata' readable writeable

buffer   rd   10000h

размер файла получается 2560 байт

ps: fasm 1.54


Дата: Авг 19, 2004 03:43:52

sensy
Размер изменился потому, что во втором случае была создана дополнительная секция.


Дата: Авг 19, 2004 04:55:20

sensy > „Если так делать, то размер файла будет зависеть от размера резервируемых данных. “

FASM умный :). Если в конце секции нули (или неинициализированные данные), то он их к Raw Size не добавляет, поэтому размер файла на винте не увеличивается.

Если добавить строчку dd 1 в самый конец исходника, тогда файл будет большой.


Дата: Авг 19, 2004 13:15:52

S_T_A_S_
Вот! Я это и имел ввиду.

Хотя не помню, зачем я в конце секции ставил инициализированные данные, но, однажды напоровшись на такое поведение, стал выносить неинициализированные данные в отдельную секцию.


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.048