Главная Случайная страница


Полезное:

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


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Макроязык





Нередко бывает полезным предварительное (до начала трансляции) преобразо­вание текста программы. Например, может потребоваться, чтобы какой-то фраг­мент программы был продублирован несколько раз или чтобы в зависимости от некоторых условий в тексте программы были сохранены одни фрагменты и уда­лены другие. Подобную возможность предоставляют так называемые макросред­ства. Расширение языка ассемблера за счет этих средств обычно называют макроязыком.

Программа, написанная на макроязыке, транслируется в два этапа. Сначала она переводится на, так сказать, чистый язык ассемблера, т.е. преобразуется к виду, где нет никаких макросредств. Этот этап называется этапом макрогенерации, его осуществляет специальный транслятор – макрогенератор. На втором этапе полу­ченная программа переводится на машинный язык. Это этап ассемблирования, его осуществляет ассемблер.

Как видно, трансляция программы, написанной на макроязыке, занимает больше времени, чем трансляция программы на «чистом» языке ассемблера. Но зато макро­язык предоставляет больше возможностей, чем просто язык ассемблера, и потому писать программы, особенно большие, на макроязыке проще.

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

n EQU 10

имя N обозначает число 10, т. к. эта директива относится к «чистому» языку ассемблера и потому будет обработана только ассемблером. Из-за подобного рода ограничений приходится усложнять макроязык.

Во-вторых, макрогенератор и ассемблер могут действовать совместно, чередуя свою работу: первым каждое предложение программы просматривает макро­генератор; если это конструкция собственно макроязыка, то макрогенератор соответствующим образом преобразует ее в группу предложений «чистого» языка ассемблера и тут же передает их на обработку ассемблеру, а если это обычное предложение «чистого» языка ассемблера, то макрогенератор сразу передает его ассемблеру. В таких условиях в конструкциях макроязыка уже можно ссылаться на объекты (например, константы) «чистого» языка ассемблера.

При «чередующемся» способе взаимодействия макрогенератора и ассемблера они фактически являются не двумя независимыми трансляторами, а частями одного транслятора, который принято называть макроассемблером.

Именно такой макроассемблер используется в рассматриваемой нами системе МАSМ. Этим и объясняется полное название ее входного языка – язык макроассемблера (macroassembler language, МАSМ). Однако в дальнейшем мы по-прежнему будем называть его языком ассемблера (сокращенно – ЯА), используя термин «макроязык» для обозначения только набора макросредств, а термин «макрогенератор» для обозначения той части макроассемблера, что занимается обработкой этих макросредств. Кроме того, термином «окончательная программа» мы будем называть ту программу, которая получается после работы макрогенератора, которая затем переводится (собственно) ассемблером на машинный язык и выполняется.







Date: 2015-10-21; view: 352; Нарушение авторских прав



mydocx.ru - 2015-2024 year. (0.009 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию