Flat Assembler 1.64. Мануал программера | страница 28
>use32
», чтобы указать битность кода в сегменте. Начало сегмента выровнено по параграфу (16 байт). Все метки, определенные далее, будут иметь значения относительно начала этого сегмента.«>entry
» устанавливает точку входа для формата MZ, за ней должен следовать дальний адрес (имя сегмента, двоеточие и смещение в сегменте) желаемой точки входа.
«>stack
» устанавливает стек для MZ. За директивой может следовать числовое выражение, указывающее размер стека для автоматического создания, либо дальний адрес начального стекового фрейма, если вы хотите установить стек вручную. Если стек не определен, он будет создан с размером по умолчанию в 4096 байт.
«>heap
» со следующим за ней значением определяет максимальный размер дополнительного места в параграфах (это место в добавление к стеку и для неопределенных данных). Используйте «>heap 0
», Чтобы всегда отводить только память, которая программе действительно нужна.
2.4.2 PE
Чтобы выбрать формат вывода PE, используйте директиву «>format PE
», за ней могут следовать дополнительные настройки формата: используйте «>console
», «>GUI
» или оператор «>native
», чтобы выбрать целевую субсистему (далее может следовать значение с плавающей точкой, указывающее версию субсистемы), «>DLL
» помечает файл вывода как динамическую связывающую библиотеку. Далее может следовать оператор «>at
» и числовое выражение, указывающее базу образа PE и далее опционально оператор «>on
» со следующей за ним строкой в кавычках, содержащей имя файла, выбирающей заглушку MZ для PE программы (если указанный файл не в формате MZ, то он трактуется как простой двоичный исполняемый файл и конвертируется в формат MZ). По умолчанию код для этого формата 32-битный. Пример объявления формата PE со всеми свойствами:
>format PE GUI 4.0 DLL at 7000000h on 'stub.exe'
«>section
» определяет новую секцию, за ней должна следовать строка в кавычках, определяющая имя секции, и далее могут следовать один или больше флагов секций. Возможные флаги такие: «>code
», «>data
», «>readable
», «>writeable
», «>executable
», «>shareable
», «>discardable
», «>notpageable
». Начало секции выравнивается по странице (4096 байт). Пример объявления секции PE:
>section '.text' code readable executable
Вместе с флагами также может быть определен один из специальных идентификаторов данных PE, отмечающий всю секцию как специальные данные, возможные идентификаторы: «>export
», «>import
», «>resource
» и «>fixups
». Если секция помечена для содержания настроек адресов, они генерируются автоматически, и никаких данных определять больше не требуется. Также данные ресурсов могут быть сгенерированы автоматически из файлов ресурсов, этого можно добиться, написав после идентификатора «