Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Способы ассемблирования




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

Двухпроходной ассемблер во время первого прохода определяет все условные обозначения, макроопределения и метки, а во время второго прохода ассемблирует код.

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

 

Макросы – псевдокоманды к транслятору прописать в определенное место исходного кода заранее определенный фрагмент кода.

Макроопределение – метод присвоения имени некоторому участку кода.

Макрос состоит из трех частей:

1. Псевдокоманды заголовка макроса, задающего имя макроса.

2. Текст, составляющий тело макроса.

3. Псевдокоманды конца макроса.

 

Макровызов – использование макроса в теле основной программы.

Макровызов считается псевдокомандой.

Макрорасширение – процесс замены макровызова на тело макроса. Оно производится во время трансляции.

Для многих макросов необходимо изменять внутренний текст, как правило относящийся к адресам или именам регистров. Для этого используются т.н. макросы с параметрами. В заголовке макроса указывается одно или несколько (до 8) символических имен, которые затем используются в теле макроса. При вызове макроса в ходе программы в порядке следования входящих переменных макроса указываются необходимые адреса, названия регистров или метки, которые во время макрорасширения ставятся на места использования входящих переменных макроса.

Условное макрорасширение (в языке Ассемблера – условное ассемблирование) – механизм, позволяющий проводить макрорасширения с различным содержимым в зависимости от управляющих параметров.

Вложенные макровызовы – механизм, позволяющий использовать макровызовы внутри макросов.

Циклические макросы (макросы с модифицированными параметрами) – отличительная их особенность в том, что при вызове транслятор сам способен модифицировать входящие параметры, прибавляя к их именам индексы, что позволяет организовать циклический вызов макроса.

Рекурсивные макровызовы – позволяют вызывать макрос внутри тела макроса. При этом необходимо использовать условное ассемблирование, т.к. рекурсивные макровызовы способны зациклить ассемблер и приводят к вечно транслированной программе.

 




Поделиться с друзьями:


Дата добавления: 2013-12-12; Просмотров: 412; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.009 сек.