Автор неизвестен - Руководство по препроцессору FASM
Название: | Руководство по препроцессору FASM | |
Автор: | Автор неизвестен | |
Жанр: | Самиздат, сетевая литература, Учебники и самоучители по компьютеру, Литература ХXI века (эпоха Глобализации экономики), Assembler | |
Изадано в серии: | неизвестно | |
Издательство: | неизвестно | |
Год издания: | - | |
ISBN: | неизвестно | |
Отзывы: | 1 комментарий | |
Рейтинг: | ||
Поделись книгой с друзьями! Помощь сайту: донат на оплату сервера |
Краткое содержание книги "Руководство по препроцессору FASM"
Аннотация к этой книге отсутствует.
Читаем онлайн "Руководство по препроцессору FASM". Главная страница.
- 1
- 2
- 3
- . . .
- последняя (8) »
РУКОВОДСТВО ПО ПРЕПРОЦЕССОРУ 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 символ (как и всё остальное заключённое между кавычками ' или "). Комментарии же удаляются без анализа того, что в них написано.
В строке после символа \ могут быть только пробелы или комментарии.
Ранее, я упоминал, что строка, состоящая только из комментария не удаляется, а заменяется на пустую строку. Это значит, что код, подобный этому:
db 1, 2, 3,\
; 4,5,6,\ - закомментировано
7, 8, 9
преобразуется в:
db 1, 2, 3
7, 8, 9
и вызовет ошибку. Выход из положения — помещать символ \ до комментария:
db 1, 2, 3,\
\; 4,5,6 - правильно закомментировано
7, 8, 9
в результате будет:
db 1, 2, 3, 7, 8, 9
как мы и хотели.
2.4. Директива INCLUDE
Синтаксис:include 'file name'
Эта директива вставляет содержимое файла file name в исходный текст. Вставленный текст, естественно, тоже будет обработан препроцессором. Имя файла (и путь к нему, если он есть) должны быть заключены в кавычки " или апострофы '.
Например:
include 'file.asm'
include 'HEADERS\data.inc'
include '..\lib\strings.asm'
include 'C:\config.sys'
Можно также использовать переменные окружения ОС, помещая их имена между символами %:
include '%FASMINC%\win32a.inc'
include '%SYSTEMROOT%\somefile.inc'
include '%myproject%\headers\something.inc'
include 'C:\%myprojectdir%\headers\something.inc'
3. Присваивания (Equates)
3.1. Директива EQU
Простейшая команда препроцессора.Синтаксис:
name1 equ name2
Это команда говорит препроцессору, что необходимо заменить все последующие name1 на name2.
Например:
count equ 10 ; это команда препроцессора
mov ecx, count
преобразуется в:
mov ecx, 10
Ещё пример:
mov eax, count
count equ 10
mov ecx, count
преобразуется в:
mov eax, count
mov ecx,10
потому что --">- 1
- 2
- 3
- . . .
- последняя (8) »
Книги схожие с «Руководство по препроцессору FASM» по жанру, серии, автору или названию:
Татьяна Владимировна Кадуцкая (Мирная) - Снегирь и волк (СИ) Жанр: Любовная фантастика Год издания: 2017 |
Автор неизвестен - Судья света (СИ) Жанр: Фэнтези: прочее Год издания: 2015 |
Другие книги автора « »:
Автор неизвестен - Апокрифические апокалипсисы Жанр: Религия Год издания: 2001 |
Автор неизвестен - KDX, полное руководство Жанр: Околокомпьютерная литература Серия: Записная книжка шифропанка |