Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
13. ТЯП-госы.doc
Скачиваний:
5
Добавлен:
26.08.2019
Размер:
502.27 Кб
Скачать

Ассемблерный код и машинные команды

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

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

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

72. Атрибутные транслирующие грамматики: синтаксически управляемые определения и схемы трансляции как способы записи семантических правил, связанных с продукциями грамматик, понятие атрибута, синтезируемые и наследуемые атрибуты, вычисление значений атрибутов, L-атрибутные и S-атрибутные транслирующие грамматики, реализация атрибутного перевода.

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

Значения атрибутов вычисляются согласно семантическим правилам, связанным с продукциями грамматики. Существует два вида записи для связанных с продукциями семантических правил:

1) синтаксически управляемые определения – представляют собой высокоуровневые спецификации трансляции, скрывающие множество деталей реализации и освобождающие пользователя от явного указания порядка выполнения трансляции;

2) схемы трансляции - указывают порядок, в котором выполняются семантические правила; так что эти схемы показывают определенную часть деталей реализации.

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

Рис. 48. Концепция синтаксически управляемой трансляции

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]