Лекции.Орг


Поиск:




Категории:

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

 

 

 

 


Использование трансляторов и интерпретаторов на разных уровнях




 

Исходный код программы – код, написанный на языке программирования.

Объектный модуль – код программы после трансляции, преобразованный в машинные коды.

Трансляция – получение объектного кода из исходного.

При программировании на языке высокого уровня обычно реализуется одна из процедур.

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

2. Программист вводит текстовый файл в память машины и вызывает программу-интерпретатор, которая преобразует каждый оператор программы в машинный код и сразу выполняет его. Отдельный файл машинного кода не создается. Следовательно, при каждом выполнении программы она преобразуется в машинный код. Реализация интерпретируемой программы длится гораздо дольше, чем компилированной, так как формирование машинного кода производится при каждом выполнении программы.

Компилятор – программа, обеспечивающая перевод с языка высокого уровня на машинный без одновременного выполнения получаемой программы.

Интерпретатор – программа, обеспечивающая перевод с языка высокого уровня на машинный с одновременным выполнением операторов программы.

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

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

Компилятор в ходе семантической обработки из атрибутированного дерева (обычно за несколько промежуточных шагов и снова с примене­нием техники атрибутирования) строит объектную программу. Структура части компилятора для семантического анализа исходя из синтаксиче­ского дерева представлена на рис. 5.1.

 

Рис. 5.1. Фазовая модель для компиляции

 

Фаза оптимизации при этом может быть опущена.

Структура части интерпретатора для семантической обработки исход­ной программы представлена на рис. 5.2.

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

 

Рис. 5.2. Фазовая модель для интерпретации

 

Корректность компиляторов и интерпретаторов имеет фундаментальное значение: для верифицированной, корректной про­граммы, которая переводится неверифицированным, некорректным ком­пилятором или выполняется некорректным интерпретатором, ее надеж­ность, достигнутая при верификации, снова теряется.

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

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



Процессор

 

Под архитектурой процессора понимается его программная модель, то есть про­граммно-видимые свойства.

Программная модель процессора - это функциональная модель, используемая программистом при разработке программ в кодах ЭВМ или на языке ассемблера. В такой модели игнорируются многие аппаратные особенности в работе процессора.

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

В состав микропроцессора (МП) входят арифметико-логическое устройство (АЛУ), устройство управления (УУ) и группа регистров (рис. 1).

 

Рис. 1. Состав микропроцессора

 





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


Дата добавления: 2016-11-18; Мы поможем в написании ваших работ!; просмотров: 1042 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Свобода ничего не стоит, если она не включает в себя свободу ошибаться. © Махатма Ганди
==> читать все изречения...

2302 - | 2063 -


© 2015-2024 lektsii.org - Контакты - Последнее добавление

Ген: 0.006 с.