Вместе с флагами также может быть определен один из специальных идентификаторов данных PE, отмечающий всю секцию как специальные данные, возможные идентификаторы: «export
import
», «resource
» и «fixups
». Если секция помечена для содержания настроек адресов, они генерируются автоматически, и никаких данных определять больше не требуется. Также данные ресурсов могут быть сгенерированы автоматически из файлов ресурсов, этого можно добиться, написав после идентификатора «resourse
» оператор «from
» и имя файла в кавычках. Ниже вы можете увидеть примеры секций, содержащих некоторые специальные данные:section '.reloc' data discardable fixups
section '.rsrc' data readable resource from 'my.res'
«entry
«stack
«heap
«data
export
», «import
», «resource
» или «fixups
») или номер записи данных в заголовке PE. Данные должны быть определены на следующих строках и заканчиваться директивой «end data
». Если выбрано определение настроек адресов, они генерируются автоматически, и никаких данных определять больше не требуется. То же самое относится к ресурсам, если за идентификатором «resourse
» следует оператор «from
» и имя файла в кавычках — в этом случае данные берутся из этого файла ресурсов.2.4.3 COFF
Чтобы выбрать COFF (Common Object File Format), используйте директиву «format COFF
format MS COFF
», если вы хотите создать классический мелкософтофский файл COFF. По умолчанию код для этого формата 32-битный. Чтобы создать микросфтовский формат COFF для архитектуры x86-64, используйте установку «format MS64 COFF
», в этом случае автоматически будет генерироваться код длинного режима.«section
code
» и «data
» для обоих вариантов COFF, «readable
», «writeable
», «executable
», «shareable
», «discardable
» и «notpageable
» только для микросовтофского варианта COFF. По умолчанию секция выровнена по двойному слову (четыре байта), но микросовтовский вариант COFF можно выровнять еще как-нибудь по-другому с помощью оператора «align
» и следующим за ним значением выравнивания (любая степень двойки от двух до 8192) среди фагов секций.«extrn
as
». Пара примеров объявления внешних символов:extrn exit
extrn
«public
as
» и строка в кавычках, содержащая имя, под которым символ будет действителен как общедоступный. Пара примеров объявления общедоступных символов:public main
public start as '_start'
2.4.4 ELF
Чтобы выбрать формат вывода ELF, используйте директиву «format ELF
format ELF
», в этом случае автоматически будет генерироваться код длинного режима.«section
executable
» и «writeable
», опционально также может идти оператор «align
» со следующим за ним числом, определяющим выравнивание секции (это должна быть степень двойки), если выравнивание не указано, используется значение по умолчанию, которое равно 4 или 8, в зависимости от варианта выбранного формата.