Библиотека knigago >> Литература по изданиям >> Самиздат, сетевая литература >> Руководство по препроцессору FASM


СЛУЧАЙНЫЙ КОММЕНТАРИЙ

# 1857, книга: Гаммельнский музыкант
автор: Величка Настрадинова

Роман Величко Настрадиновой "Гаммельнский музыкант" - это увлекательное и захватывающее научно-фантастическое приключение, которое не оставит читателей равнодушными. История разворачивается в постапокалиптическом мире, где землю населяют мутанты и монстры. Главный герой, музыкант по имени Гаммельн, обладает уникальной силой: его музыка способна управлять существами и влиять на реальность. Однажды он получает загадочное приглашение от таинственной организации, известной как...

СЛУЧАЙНАЯ КНИГА

Меж двух времен. Джек Финней
- Меж двух времен

Жанр: Научная Фантастика

Год издания: 2016

Серия: Шедевры фантастики (продолжатели)

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

Руководство по препроцессору FASM
Книга - Руководство по препроцессору FASM.  Автор неизвестен  - прочитать полностью в библиотеке КнигаГо
Название:
Руководство по препроцессору FASM
Автор неизвестен

Жанр:

Самиздат, сетевая литература, Учебники и самоучители по компьютеру, Литература ХXI века (эпоха Глобализации экономики), Assembler

Изадано в серии:

неизвестно

Издательство:

неизвестно

Год издания:

-

ISBN:

неизвестно

Отзывы:

1 комментарий

Рейтинг:

Поделись книгой с друзьями!

Помощь сайту: донат на оплату сервера

Краткое содержание книги "Руководство по препроцессору FASM"

Аннотация к этой книге отсутствует.

Читаем онлайн "Руководство по препроцессору FASM". [Страница - 8]

директива FIX скажет препроцессору поменять все EQU на =. Далее, перед обработкой следующей строки, препроцессор проверит, нет ли там пофиксеных идентификаторов. Так что в нашей второй строке equ будет заменено на =, и строка примет вид a = 10. Так что никакой другой обработки этой строки не будет выполнено. А значит, и третья строка не будет преобразовываться препроцессором, так как идентификатор a не будет определён директивой EQU. Результат всего этого будет такой:

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 научились его использовать по этой документации и при помощи форума.


--">
Комментариев: 1
17-07-2021 в 19:31   #418
Лучше не писать такие книги вобще. Написано отвратно как курсовая студентом. К сожелению интернет загажен таким мусором. Приличной книги толковой поFasm нет

Оставить комментарий:


Ваш e-mail является приватным и не будет опубликован в комментарии.