Great Да только если ресурсов за этим не следует. Кстати вот код типа Код (Text): Start: .... TempBuffer: dd 100 dup (?) end Start так вот tasm+tlink место в файле экономит и под TempBuffer не выделяет если нет ресурсов, а вот masm всегда выделяет место
Quantum Секция ресурсов может называться как угодно, но если их не вставлять в exe, и все неинициализированные переменные разместить в сегменте кода т.е. сегмента данных нет вообще то даже код Код (Text): init SEGMENT PAGE public USE32 'ICODE' ASSUME cs:init Start: mov eax, [esp] .... ...... Buffer: dd 100000h dup (?) init ENDS END Start будет занимать в конечном exe 4096 байт
PROFi Теоретически. Чтоб иконка в эксплорере нормально отображалась, называть её иначе не рекомендуется. При стандартном выравнивании он будет занимать на диске 512 байт. Но при чём тут ресурсы, а?
Quantum А при том что долбанный tlink их всегда размещает после секции кода (короче в конце файла) и если указанный выше вайл содержит секцию ресурсов, то секция кода раздвигается по умолчанию до невиданных размеров (хотя практически этого можно избежать). Столкнулся с этим при написании драйверов. А если секции ресурсов нет, то и секция кода содержит только инициализированные данные и имеет малый размер.
PROFi Хмм... Я тоже использовал tlink32 для создания экзешников с ресурсами и неинициализированными данными, но чтоб сам факт присутствия ресурсов влиял на размер секции кода/данных... в общем, не замечал такого. Всё равно, это можно назвать только багом конкретного линкера.
я не врубился: зачем объединять .data? и .text ? что вы выигрывате, секции не создаётся в файле, только описатель тобишь IMAGE_SECTION_HEADER, так вам жалко что-ли эти 24h на его описание? там всё равно выравнимание и ничего не выигрывается
rain 28h Но я бы тоже не советовал совмещать код и данные, т.к. перезаписываемая секция кода или исполнимая секция данных - это не есть хорошо.
В коде oleaut32 жестко зашита строка ".rsrc", мелкомягкие грамотеи, блин... Кстати, а в Висте этот баг исправлен?
О как... спасибо, не знал. Просто никогда подобных проблем не возникало, даже если в FASM'e использовал не отдельную секцию, а DATA/END DATA объявления. Думал разбор ведётся по талице директорий, а тут грабли подложили. [added] Вот пример - работает и отображает нормально на XP sp2
Mental_Mirror Не в этом случае. Если будут смотреть не на имя секции, а на тип, то совместимости не убудет. Или имеется ввиду совместимость багов?
rain Вся проблема в базонезависимом коде. Т.е. неважно с какого адреса вас запустили, вы всегда можете получить доступ к своим данным по смещению от конца программы. Quantum т.к. перезаписываемая секция кода или исполнимая секция данных - это не есть хорошо. Код (Text): mov eax,cr0 and eax,0FFFEFFFFh mov cr0,eax Почему? ведь CPU это позволяет, а с учетом атрибутов секции кои можно установть на чтение-запись и исполнение (+невыгружаемая, но это лишнее). Другое дело если язык программирования Си и т.д., тут столько мусора создается .... Кстати очередной баг - если в драйвере нет ни одного релокейшена, то такой драйвер не загружается.