Автор неизвестен - Руководство по препроцессору FASM
Название: | Руководство по препроцессору FASM | |
Автор: | Автор неизвестен | |
Жанр: | Самиздат, сетевая литература, Учебники и самоучители по компьютеру, Литература ХXI века (эпоха Глобализации экономики), Assembler | |
Изадано в серии: | неизвестно | |
Издательство: | неизвестно | |
Год издания: | - | |
ISBN: | неизвестно | |
Отзывы: | 1 комментарий | |
Рейтинг: | ||
Поделись книгой с друзьями! Помощь сайту: донат на оплату сервера |
Краткое содержание книги "Руководство по препроцессору FASM"
Аннотация к этой книге отсутствует.
Читаем онлайн "Руководство по препроцессору FASM". [Страница - 8]
a = 10
mov ax, a
Директива FIX может быть использован и для определения макросов в макросах — того, что мы хотели сделать в нашем гипотетичном примере. Делается это подобным образом:
macro declare_macro_AAA
{
macro AAA
%_
db 'aaa',0
_%
}
%_ fix {
_% fix }
declare_macro_AAA
Здесь, препроцессор найдёт объявление макроса declare_macro_AAA и определит его, далее будет два FIX, и потом использование макроса declare_macro_AAA. Так что он преобразует это в:
macro declare_macro_AAA
{
macro AAA
%_
db 'aaa',0
_%
}
%_ fix {
_% fix }
macro AAA
%_
db 'aaa',0
_%
и теперь уже содержимое нового макроса будет обработано препроцессором. Далее будут заменены аргументы FIXов, и получится:
macro declare_macro_AAA
{
macro AAA
%_
db 'aaa',0
_%
}
macro AAA
{
db 'aaa',0
}
как мы и хотели.
Подобным образом можно пофиксить все остальные проблематичные вещи:
macro declare_macro_TEXT
{
macro TEXT [arg]
%_
%forward
db %x arg
_%
}
%_ fix {
_% fix }
%forward fix forward
declare_macro_TEXT
%x fix `
TEXT abc,def
В этом примере нужно обратить внимание на один момент: строка %x fix ` должна находиться после declare_macro_TEXT. Если б она находилась до, то %x было бы пофиксено во время развёртывания макроса, и тогда `arg приняло бы вид 'arg', следовательно макрос TEXT был бы объявлен так:
macro TEXT [arg]
{
forward
db 'arg' ;строка не зависит от аргументов
}
Но, в нашем случае он будет:
macro TEXT [arg]
{
forward
db `arg ;имена аргументов превращаются в строки
}
Этот пример показывает, как важно местонахождение FIX.
Иногда необходимо фиксить идентификаторы дважды:
macro m1
{
macro m2
%_
macro m3 [arg]
%%_
db arg
_%%
_%
}
%%_ fix %_
_%% fix _%
%_ fix {
%_ fix }
m1
m2
m3
Символы фиксятся даже во время препроцессинга других FIX, так что код выше не будет работать, если порядок будет такой:
%_ fix {
%_ fix }
%%_ fix %_
_%% fix _%
В этом случае строка %%_ fix %_ была бы пофиксена сразу же после %_ fix {, так что все последующие %%_ сразу же преобразовались бы в }. То же самое и для _%% fix _%.
Я знаю, FIXы могут смутить, и хорошо бы понимать внутренние детали работы препроцессора, но они предоставляют очень большие возможности. Privalov делает FASM настолько мощным, на сколько это возможно, даже за счёт некоторого ущерба удобопонятности.
Заключение
Не забывайте читать документацию FASM. Практически всё, что есть в туториале, можно найти там. Может быть написано и немного сложнее для изучения, но лучше подойдёт в качестве справочной информации. Не так сложно запомнить — 99 % пользователей FASM научились его использовать по этой документации и при помощи форума.--">
Книги схожие с «Руководство по препроцессору FASM» по жанру, серии, автору или названию:
Антонина Львовна Клименкова - Ёлка Для Вампиров (СИ) Жанр: Любовная фантастика Год издания: 2017 |
Другие книги автора « »:
Автор неизвестен - Литературный текст: проблемы и методы исследования. 7. Анализ одного произведения: «Москва-Петушки»... Жанр: Языкознание Год издания: 2001 |
Автор неизвестен - Танки ленд-лиза в Красной Армии. Часть 2 Жанр: История: прочее Год издания: 2005 Серия: Танк на поле боя |
Автор неизвестен - Сказки Северной Африки. Газель с золотыми копытцами Жанр: Сказки для детей Год издания: 1988 |