Flat Assembler 1.64. Мануал программера [Tomasz Grysztar] (fb2) читать постранично, страница - 16


 [Настройки текста]  [Cбросить фильтры]

код длинного режима.

«section» определяет новую секцию, за директивой должна следовать строка в кавычках, определяющая имя новой секции, и ещё может следовать один или более флагов секций. Возможные флаги такие: «code» и «data» для обоих вариантов COFF, «readable», «writeable», «executable», «shareable», «discardable» и «notpageable» только для микросовтофского варианта COFF. По умолчанию секция выровнена по двойному слову (четыре байта), но микросовтовский вариант COFF можно выровнять еще как-нибудь по-другому с помощью оператора «align» и следующим за ним значением выравнивания (любая степень двойки от двух до 8192) среди фагов секций.

«extrn» определяет внешний символ, за ним должно следовать имя символа и опционально оператор размера, указывающий размер данных, помеченных этим символом. Имя символа также может предваряться строкой в кавычках, содержащей имя внешнего символа и оператор «as». Пара примеров объявления внешних символов:

extrn exit

extrn 'impMessageBoxA@16' as MessageBox: dword

«public» объявляет существующий символ как общедоступный, за ним должно следовать имя символа, и далее опционально оператор «as» и строка в кавычках, содержащая имя, под которым символ будет действителен как общедоступный. Пара примеров объявления общедоступных символов:

public main

public start as '_start'

2.4.4 ELF

Чтобы выбрать формат вывода ELF, используйте директиву «format ELF». По умолчанию код для этого формата 32-битный. Чтобы создать формат ELF для архитектуры x86-64, используйте установку «format ELF», в этом случае автоматически будет генерироваться код длинного режима.

«section» определяет новую секцию, за директивой должна следовать строка в кавычках, определяющая имя новой секции, и ещё может следовать один или оба флага «executable» и «writeable», опционально также может идти оператор «align» со следующим за ним числом, определяющим выравнивание секции (это должна быть степень двойки), если выравнивание не указано, используется значение по умолчанию, которое равно 4 или 8, в зависимости от варианта выбранного формата.

«extrn» и «public» имеют те же значения и синтаксис у них, как в случае формата COFF (описанного в предыдущем параграфе).

Чтобы создать исполняемый файл, придерживайтесь директивы выбора формата со словом «executable». Это позволяет использовать директиву «entry» со следующим за ним значением, чтобы создать точку входа в программу. С другой стороны это делает недоступными директивы «extrn» и «public». За директивой «section» в этом случае может следовать только один или более флагов секций и начало секции будет выровнено по странице (4096 байт). Доступные флаги секций такие: «readable», «writable» и «executable».