Макросы и директивы компилятора FASM | страница 6




Формат PE (Portable Executable)

Чтобы выбрать формат PE, используйте директиву >format PE. Она может сопровождаться дополнительными типами формата: >console, >GUI или >native оператор выбирает целевую подсистему (значение с плавающей запятой определяет версию подсистемы), DLL создает файл библиотеки. Потом может идти оператор >at и численное выражение, определяющее, базу PE образа и затем произвольно on оператор, сопровождаемый строкой в кавычках, содержащей имя файла содержащего MZ заглушку для PE программы (если указанный файл не формата MZ он берется как обычный двоичный файл и конвертируется в MZ). Установка кода по умолчанию для этого формата — 32 бита.

Директива >section определяет новый сегмент, за ней должна идти строка в кавычках, определяющая название сегмента за которым могут следовать один или более флагов сегментов. Возможные флаги: >code, >data, >readable, >writeable, >executable, shareable и >discardable. Среди флагов также могут быть определены специальные PE идентификаторы данных, чтобы создать сегмент специальные данных, доступные идентификаторы >export, >import, >resource и >fixups. Когда выбрано определение данных >fixups, они создаются автоматически и не требуют дополнительной информации. Начало сегмента выравнивается по страницам (4096 байт).

Директива >entry устанавливает точку входа для Portable Executable, необходимо значение точки.

Директива >stack устанавливает размер стека для PE, за директивой идет значение, резервируемое под стек, произвольная величина стека может следовать через запятую. Когда стек не задан, он создается размером 4096 байт.

Директива >heap задает размер кучи для PE, за директивой идет значение, резервируемое под кучу, произвольная величина стека может следовать через запятую. Когда куча не определена, она создается по умолчанию 65536 байт, когда размер кучи совершенно не установлен, она устанавливается в 0.

Директива data начинает определение специальных PE данных, она должна сопровождаться одним из идентификаторов данных (>export, >imort, >resource или >fixups) или номером записи данных в PE заголовке. Данные должны быть определены на следующих строках, заканчивающихся директивой >end data. Когда выбрано определение данных >fixups, они создаются автоматически и не требуют дополнительной информации.


Формат COFF (Common Object File Format)

Чтобы выбрать формат COFF, используйте >format COFF или >format MS COFF, если Вы хотите создать простой или Microsoft COFF файл. В этом формате код по умолчанию 32 бит.