Директивы управления файлом листинга
Ассемблер предоставляет ряд директив для управления содержимым файла лис-
тинга. Далее приведена их общая характеристика.
Общие директивы управления листингом призваны управлять видом файла ли-
стинга. Все директивы являются парными, это означает, что если одна директива
что-то разрешает, то другая, наоборот, запрещает.
в Директивы
и
и
определяют необходимость вывода в
файл листинга всех строк исходного кода (по умолчанию). Для запрета вывода
в файл листинга всех строк исходного кода необходимо использовать директи-
вы
или
В тексте программы их можно применять произвольное
количество раз, при этом очередная директива отменяет действие предыдущей.
Директивы
и
управляют выводом в файл листинга самих дирек-
тив управления листингом, в то время как директивы
и
и
влияют на полноту представления исходного кода в целом.
Директивы
и
определяют включение
или не включе-
ние
таблицы идентификаторов в файл листинга.
Директивы вывода текста включаемых файлов
и
регулируют
включение в файл листинга текста включаемых файлов (по директиве INCLUDE).
По умолчанию включаемые файлы записываются в файл листинга. Директива
запрещает вывод в файл листинга всех последующих включаемых фай-
лов, пока вывод снова не будет разрешен директивой
Директивы вывода блоков условного ассемблирования регулируют включение
блоков условной компиляции в листинг программы.
Директива
заставляет ассемблер выводить в файл листинга
все операторы условных блоков (в том числе с условием false). Директива
запрещает вывод в файл листинга блоков условного ас-
семблирования с условием false.
11
256
322 Глава 14. Макросредства языка ассемблера
Директива
переключает режимы вывода
и
Эту директиву можно использовать как отдельно, так и совместно
с директивами
и
Первая директива
которую обнару-
живает TASM,
вывод в файл листинга всех блоков условного ассем-
блирования. Следующая директива
запретит вывод этих блоков. С ди-
рективой
можно использовать ключ /х командной строки транслятора
TASM — в этом случае блоки условного ассемблирования будут сначала выво-
диться в файл листинга, но первая же директива
запретит их вывод.
Директивы вывода макрорасширений, как явствует из названия, управляют вы-
водом макрорасширений:
Директива
разрешает вывод в файл листинга всех макрорасши-
рений.
Директива
запрещает вывод всех операторов макрорасшире-
ния в файл листинга.
8 В трансляторе MASM можно использовать директиву
позволяющую вы-
водить в листинг только те макрорасширения, которые генерируют код или дан-
ные.
Итоги
9 Преимущества языка ассемблера связаны, в частности, с макросредствами. Как
говорят, если бы макросредств в нем не было, то их нужно было бы придумать.
л Макросредства — это основные инструменты модификации текста программы
на этапе ее трансляции. Принцип работы макросредств основан на
обработке, которая заключается в том, что текст, поступающий на вход
транслятора, перед собственно компиляцией подвергается преобразованию
и может значительно отличаться от синтаксически правильного текста, воспри-
нимаемого компилятором. Роль препроцессора в трансляторе TASM выполня-
ет макрогенератор.
Для того чтобы макрогенератор мог выполнить свою работу, текст программы
должен удовлетворять определенным требованиям. Макрогенератору необхо-
димо сообщить, на какие элементы исходного текста он должен реагировать
и какие действия должны быть произведены. Можно выделить несколько ти-
пов таких элементов.
Псевдооператоры
и = предназначены для присвоения некоторому выраже-
нию символического имени или идентификатора. Эти действия выполняет мак-
рогенератор, заменяя в последующем тексте программы символические имена
из правой части этих операторов строками из левой.
Макрокоманда — строка в исходной программе, которой соответствует специ-
альный блок — макроопределение. Макрокоманда может иметь аргументы, с по-
мощью которых можно изменять текст макроопределения. Макрогенератор,
встречая макрокоманду в тексте программы, корректирует текст соответствую-
щего макроопределения, исходя из аргументов этой макрокоманды, и вставля-
Итоги 323
ет его в текст программы вместо данной макрокоманды. Процесс такого заме-
щения называется макрогенерацией.
Условные директивы компиляции позволяют не просто модифицировать от-
дельные строки программы, но и, исходя из определенных условий, управлять
включением в загрузочный модуль отдельных фрагментов программы. Эти ди-
рективы наиболее эффективны для работы с аргументами, передаваемыми при
макрогенерации в макроопределения из макрокоманд, хотя отдельные дирек-
тивы есть смысл применять и вне макроопределений в любом месте про-
граммы.
Директивы генерации ошибок, подобно условным директивам, позволяют ана-
лизировать определенные условия в процессе трансляции программы и гене-
рировать ошибку по результатам анализа.
Для удобства формирования файла листинга компиляторы ассемблера предо-
ставляют в распоряжение программиста ряд директив. С помощью этих дирек-
тив можно довольно гибко изменять формат и полноту информации, выводи-
мой ассемблером в файл листинга.
Do'stlaringiz bilan baham: |