Руководство по препроцессору FASM - Автор Неизвестен

Руководство по препроцессору FASM

В этой удивительной книге вы откроете мир новых возможностей и историй, где каждый персонаж и событие приносят с собой неповторимую глубину и интригу. Автор волшебным образом сочетает элементы фантазии, приключения и человеческих драм, создавая непередаваемую атмосферу, в которой каждая страница — это путешествие в неизведанные миры. Поднимите книгу и готовьтесь погрузиться в мир, где слова становятся живыми, а истории оживают перед вашими глазами.

Читать Руководство по препроцессору FASM (Неизвестен) полностью

1. Об этом документе

Я написал это потому что вижу, как многие задают вопросы на форуме FASM, связанные с непониманием идей или особенностей препроцессора. (Я не отговариваю Вас задавать такие вопросы, непонимание чего-то — это вполне нормально, и если Ваш вопрос не чересчур сложен, кто-нибудь наверняка на него ответит).

Если Вам что-нибудь из туториала покажется непонятным, пожалуйста, напишите на форум FASM, форум WASM, автору или переводчику.

2. Общие понятия

2.1. Что такое препроцессор

Препроцессор — это программа (или чаще — часть компилятора), которая преобразует исходный текст непосредственно перед компиляцией. К примеру, если Вы используете какой-либо кусок кода довольно часто, можно дать ему некое имя и заставить препроцессор повсеместно заменять это имя в исходном тексте на соответствующий ему код.

Другой пример — Вы хотите имитировать инструкцию, которая на самом деле не существует. В таком случае препроцессор может заменять её последовательностью инструкций дающих желаемый эффект.

Препроцессор просматривает исходный текст и заменяет некоторые вещи другими. Но как объяснить препроцессору, что именно он должен делать? Для этих целей существуют директивы препроцессора. О них мы и будем говорить.

Препроцессор понятия не имеет о инструкциях, директивах компилятора и прочих подобных вещах. Для него существуют собственные команды, и он игнорирует всё остальное.

2.2. Комментарии

Подобно большинству ассемблеров, комментарии в FASM начинаются с точки с запятой >;. Всё, что следует за этим символом до конца строки игнорируется и удаляется из исходника.

К примеру, исходный текст

>; заполним 100h байтов адресуемых EDI нулями

>xor eax, eax ; обнуляем eax

>mov ecx, 100h/4

>rep stosd

после препроцессора превращается в

>xor eax,eax

>mov ecx,100h/4

>rep stosd

ПРИМЕЧАНИЕ:>; можно рассматривать как директиву препроцессора, удаляющую текст начиная с этого символа до конца строки.

ПРИМЕЧАНИЕ: Строка, полностью состоящая из комментария не будет удалена. Она становится пустой строкой (см. пример выше). Это будет важно в дальнейшем.

2.3. Перенос строки (Line Break)

Если строка выглядит слишком длинной, возможно разделить её на несколько, используя символ >\. При обработке препроцессором следующая строка будет добавлена к текущей.

Например:

>db 1, 2, 3,\

> 4, 5, 6,\

> 7, 8, 9

будет преобразовано в:

>db 1,2,3,4,5,6,7,8,9

Конечно, >\ в составе текстовой строки или комментария не вызовет объединения строк. Внутри текстовой строки этот символ воспринимается как обычный ASCII символ (как и всё остальное заключённое между кавычками