Посмотрел... Во, как надо: section '.udata' readable writeable Но только перед кодом, иначе не работает.
На самом деле можно даже не объявлять, а располагать неинициализированные данные после инициализированных в .data, причем строго после.
a111 > Но только перед кодом, иначе не работает. Неверное утверждение Код (Text): 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'
Asterix Если так делать, то размер файла будет зависеть от размера резервируемых данных. Код (Text): section '.data' data readable writeable szCaption db "bla bla bla",0 ; если не расскоментировать, файлик будет очень большой ;section '.udata' readable writeable buffer rd 10000h
sensy Я не понял что ты мне хотел возразить, естественно я проверил прежде чем постить. Так Код (Text): section '.data' data readable writeable szCaption db "bla bla bla",0 ;section '.udata' readable writeable buffer rd 10000h размер файла получается 2048 байт Если так Код (Text): section '.data' data readable writeable szCaption db "bla bla bla",0 section '.udata' readable writeable buffer rd 10000h размер файла получается 2560 байт ps: fasm 1.54
sensy > FASM умный . Если в конце секции нули (или неинициализированные данные), то он их к Raw Size не добавляет, поэтому размер файла на винте не увеличивается. Если добавить строчку <font face="monospace]dd 1</font><!--face--> в самый конец исходника, тогда файл будет большой.
S_T_A_S_ Вот! Я это и имел ввиду. Хотя не помню, зачем я в конце секции ставил инициализированные данные, но, однажды напоровшись на такое поведение, стал выносить неинициализированные данные в отдельную секцию.