Системное программное обеспечение
Вид материала | Документы |
СодержаниеВопрос № 13. Ассемблеры. Определение, области применения Машинный язык Основные этапы(фазы) обработки программы компилятором Синтаксический анализатор Фаза оптимизации Язык Ассемблера |
- Методика рейтингового контроля знаний студентов по дисциплине «Системное программное, 42.76kb.
- Методические указания по выполнению курсовых работ по дисциплине «Системное программное, 710.3kb.
- М. В. Ломоносова Факультет вычислительной математики и кибернетики Н. В. Вдовикина,, 2124.49kb.
- Рабочая учебная программа по дисциплине «Системное программное обеспечение» Направление, 78.8kb.
- Методические указания и контрольные задания по дисциплине системное программное обеспечение, 196.97kb.
- Программа вступительного экзамена, 67.56kb.
- Программное обеспечение ЭВМ, 209.59kb.
- Системное программное обеспечение, 874.72kb.
- Задания для студентов гр. Пз-21 Составил: к ф. м н. Цветков, 170.59kb.
- Системное программное обеспечение, 30.48kb.
Вопрос № 13. Ассемблеры. Определение, области применения
Трансляторы - общее название для программ, осуществляющих трансляцию. Они подразделяются на Ассемблеры и Компиляторы - в зависимости от исходного языка программы, которую они обрабатывают. Ассемблеры работают с Автокодами или языками Ассемблера, Компиляторы - с языками высокого уровня.
Автокод - символьный язык программирования, предложения которого по своей структуре в основном подобны командам и обрабатываемым данным конкретного машинного языка.
Машинный язык - язык программирования, предназначенный для представления программы в форме, позволяющей выполнять ее непосредственно техническими средствами обработки информации.
Транслятором называется системная программа, выполняющая преобразование программы, написанной на одном алгоритмическом языке, в программу на другом алгоритмическом языке в определенном смысле эквивалентную первой.
Компилятором называется системная программа, выполняющая преобразование программы, написанной на одном алгоритмическом языке, в программу на языке, близком к машинному, и в определенном смысле эквивалентную первой.
Преобразования программы выполняется в несколько этапов(фаз), взаимосвязь между которыми отображена на рисунке:
Исходый текст
Лексический анализ
Синтаксический анализ
Трнсляция в промежуточную форму
Матрица промежуточного кода
Оптимизация
Распределение памяти
Оптимизированная матрица промежуточного кода
Генерация кода
Объектный код программы
Основные этапы(фазы) обработки программы компилятором
- Лексический анализатор выполняет распознавание лексем языка и замену их соответствующими кодами. Под лексемами понимаются элементарные единицы, входящие в структуру предложения языка, такие как ключевые слова, константы, имена и т.п. Правильность задания структуры предложения языка на фазе лексического анализа не выполняется.
- Синтаксический анализатор выполняет проверку правильности задания предложений языка в соответствии с грамматикой языка. Только при отсутствии ошибок возможна работа последующих модулей компилятора.
- На фазе трансляции в промежуточную форму выполняется преобразование программы в матрицу промежуточного кода, где каждая строка матрицы содержит в общем случае тройку - код операции и два операнда. Промежуточные коды не имеют прямых аналогов в системе машинных команд, поэтому данную форму представления программы называют машинно-независимой.
- Фаза оптимизации предназначена для уменьшения избыточности программы по затратам времени и памяти. В зависимости от критериев проектирования транслятора данная фаза обработки программы может исключаться из цикла обработки программы.
- На фазе распределения памяти определяются объемы каждого из видов памяти, используемых в данной программе, и вносятся коды резервирования памяти в матрицу промежуточного кода. Каждая программа использует по крайней мере два вида памяти: статическую - для разщения данных и кодов программы, и стековую - для обращения к подпрограммам.
- На фазе генерации кода выполняется подстановка кодовых образцов на выходном языке, соответствующих промежуточным кодам программы. Кроме того, на этой фазе обработки программы выполняется также машинно-зависимая оптимизация программы, которая заключается в учете особенностей архитектуры данного компьютера. Например, использование общих регистров процессора для хранения результатов промежуточных вычислений позволяет почти в два раза уменьшить время выполнения программы.
Как правило, выходным языком транслятора является машинный язык целевой вычислительной системы. (Целевая ВС - та ВС, на которой программа будет выполняться.)
Язык Ассемблера - система записи программы с детализацией до отдельной машинной команды, позволяющая использовать мнемоническое обозначение команд и символическое задание адресов.
Он позволяет программисту пользоваться текстовыми мнемоническими (то есть легко запоминаемыми человеком) кодами, по своему усмотрению присваивать символические имена регистрам компьютера и памяти, а также задавать удобные для себя способы адресации. Кроме того, он позволяет использовать различные системы счисления (например, десятичную или шестнадцатеричную) для представления числовых констант, использовать в программе комментарии и др.
Язык ассемблера, обеспечивая возможность символических имен в программе и избавляя программиста от утомительной работы по распределению памяти ЭВМ для переменных и констант, существенно облегчает труд программиста и повышает его производительность по сравнению с программированием на машинном языке. Язык ассемблера позволяет также гибко и полно реализовать технические возможности ЭВМ, как и машинный язык. Транслятор программ с этого языка, т. е. ассемблер, гораздо проще и компактней транслятора программ, требующегося для алгоритмического языка высокого уровня, а результирующая машинная программа на выходе ассемблера может быть столь же эффективной, как и программа, которую сразу написали на машинном языке. Поэтому неудивительно, что первым транслятором, который создается для новой ЭВМ, является обычно ассемблер. Это особенно справедливо для микро-ЭВМ, в которых ограниченный объем основной памяти может значительно усложнить задачу создания транслятора с языка высокого уровня и заставить разработчиков программного обеспечения в течение долгого времени довольствоваться языком ассемблера.
Таким образом, язык ассемблера и сам ассемблер обычно составляют основу для создания программного обеспечения микро-ЭВМ и, в частности, операционных систем и систем реального времени, к которым предъявляются высокие требования с точек зрения объема занимаемой машинной памяти и скорости выполнения программ.
Язык Ассемблера "в чистом виде" применяется только для написания отдельных небольших частей системного ПО: микроядра ОС, самых нижних уровней драйверов - тех частей, которые непосредственно взаимодействуют с реальными аппаратными компонентами.
Языки высокого уровня были разработаны для того, чтобы избежать специальной технической особенности конкретных компьютеров. Язык ассемблера, в свою очередь, разработан для конкретной специфики компьютера или точнее для специфики процессора.
Программа, написанная на языке ассемблера, состоит из последовательности предложений, или операторов, и называется исходной программой или исходным модулем.