Макросы и директивы компилятора FASM - Автор Неизвестен

Бесплатно читаем книгу Макросы и директивы компилятора FASM - Автор Неизвестен без сокращений! Чтобы читать полную версию, не нужна регистрация на сайте. Помните, что чтение доступно как на компьютере, так и на Андроиде, Айфоне и любом другом телефоне.
Макросы и директивы компилятора FASM - Автор Неизвестен

Автор Неизвестен - Макросы и директивы компилятора FASM о чем книга


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

Читать онлайн бесплатно Макросы и директивы компилятора FASM, автор Автор Неизвестен


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

Например, определение следующего макроса позволяет сократить выражение >test al,0xFF инструкцией >tst:

>macro tst {test al, 0xFF}

После ключевого слова >macro идет имя макроса и его содержимое внутри фигурных скобок >{}. Вы можете использовать инструкцию >tst в любом месте после её определения и она будет скомпилирована как >test al,0xFF. Определение константы >tst той величины дало бы тот же эффект, но разница в том, что имя макроса считается мнемоникой инструкции. То есть, макросы заменяются соответствующим кодом раньше, чем символические константы будут заменены их величинами. Так, если Вы определяете макрос и символическую константу с одним именем, и используете это название как мнемонику инструкции, она будет заменена содержанием макроса, но и будет заменена величиной, если символическая константа используется где-нибудь в операндах.

Макросы могут состоять из нескольких строк, так как начало и конец макроса не обязаны быть на той же самой строке что и директива macro. Например:

>macro stos0

> {

>      xor al,al

>      stosb

> }

При использовании макрос >stos0 будет заменен этими двумя инструкциями.

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

>macro align value {rb (value-1)-($+value-1) mod value}

Когда инструкция >align 4 будут найдена после определения этого макроса, она будет заменена его содержанием, и >value станет равно >4, так что в результате мы получим >rb (4-1) - ($+4-1) mod 4.

Если в макросе использовать инструкцию с тем же самым именем, будет использовано предыдущее значение этого имени. Таким образом, можно сделать полезное определение макроса в макросе, например:

>macro mov op1,op2

> {

>  if op1 in & op2 in

>      push op2

>      pop op1

>  else

>      mov op1,op2

Вы автор?
Жалоба
Все материалы размещаются на сайте его пользователями.
Если Ваша книга была опубликована без Вашего ведома и/или без Вашего согласия, пожалуйста, напишите нам, и мы в срочном порядке примем меры.