› sites › default › files › courses › spo › spo_lecture1.pdf · Факультет...

Preview:

Citation preview

Федеральное агентство связиГосударственное образовательное учреждение

высшего профессионального образования«Сибирский государственный университет телекоммуникаций и информатики»

Факультет ИВТКафедра ВС

Системное программное обеспечение

Курс лекций

Молдованова Ольга Владимировна

Новосибирск - 2010

График учебного процессаНачало Окончание Лабораторные работы РГЗ

06.09.2010 12.09.2010 Лабораторная работа №1. Формальные грамматики и их свойства

Разработка компилятора

для заданного языка

программиро-вания

13.09.2010 19.09.2010

20.09.2010 26.09.2010 Лабораторная работа №2. Грамматики и конечные автоматы27.09.2010 03.10.2010

04.10.2010 10.10.2010 Лабораторная работа №3. Работа с таблицей идентификаторов11.10.2010 17.10.2010

18.10.2010 24.10.2010 Лабораторная работа №4. Проектирование лексического анализатора

25.10.2010 31.10.2010

01.11.2010 07.11.2010

08.11.2010 14.11.2010 Лабораторная работа №5. Построение простейшего дерева вывода15.11.2010 21.11.2010

22.11.2010 28.11.2010

29.11.2010 05.12.2010 Лабораторная работа №6. Генерация и оптимизация объектного кода06.12.2010 12.12.2010

13.12.2010 19.12.2010

20.12.2010 26.12.2010 Сдача долгов

Содержание курса

1. Структура и состав системного программного обеспечения.

2. Языки и грамматики.

3. Трансляторы, методы и средства их разработки.

4. Макропроцессоры и ассемблеры.

5. Загрузчики и редакторы связей.

Список литературы

1. Молчанов А.Ю. Системное программное обеспечение: Учебник для вузов. 3-е изд. – СПб.: Питер, 2010. – 400 с.

2. Ахо А.В., Лам М. С., Сети Р., Ульман Дж. Д. Компиляторы: принципы, технологии и инструментарий, 2-е изд. : Пер. с англ. – М.: ООО "Изд. дом Вильямс", 2008. – 1184 с.

3. Aхо А., Ульман Дж. Теория синтаксического анализа, перевода и компиляции. Том 1. Синтаксический анализ. – М.: Мир, 1978. – 613 с.

4. Карпов Ю.Г. Теория и технология программирования. Основы построения трансляторов. – СПб.: БХВ-Петербург, 2005. – 272 с.

5. Серебряков В.А., Галочкин М.П. Основы конструирования компиляторов. – М.: Едиториал УРСС, 2001. – 224 с. (http://www.citforum.ru/programming/theory/serebryakov/)

6. Голубь Н.Г. Искусство программирования на Ассемблере. Лекции и упражнения. – М.: DiaSoft, 2002. – 656 с.

Вычислительная система — это программно-аппаратный комплекс, который предоставляет услуги

пользователю.

Системное программное обеспечение (СПО)

Системное программное обеспечение ‒

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

Группы СПО

1. Операционные системы.

2. Системы управления файлами.

3. Интерфейсные оболочки для взаимодействия пользователя с ОС.

4. Системы программирования.

5. Утилиты.

Системы программирования

Транслятор

Транслятор – это программа, переводящая программу на исходном (входном) языке в эквивалентную ей программу на результирующем (выходном) языке

Транслятор = компилятор?

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

Интерпретатор

Интерпретатор – это программа, которая воспринимает исходную программу на входном (исходном) языке и выполняет её

Гибридный компилятор

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

результата работы во внешнюю память

Однопроходные компиляторы возможны только для очень простых языков

Реальные компиляторы выполняют, как правило, от двух до пяти проходов

Наиболее распространены двух- и трёхпроходныекомпиляторы:

1. Лексический анализ2. Синтаксический разбор и семантический анализ3. Генерация и оптимизация кода

Лексический анализ

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

лексемы анализатор строит выходной токен (token) вида:

<имя_токена, значение_атрибута>

position = initial + rate * 60

<id,1> <=> <id,2> <+> <id,3> <*> <60,4>

Синтаксический анализ

Анализатор использует первые компоненты токенов, полученных при лексическом анализе, для создания

синтаксического дерева, которое описывает грамматическую структуру потока токенов.

<id,1> <=> <id,2> <+> <id,3> <*> <60,4>

Семантический анализСемантический анализатор использует синтаксическое дерево и

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

синтаксическом дереве или в таблице идентификаторов для последующего использования в процессе генерации

промежуточного кода.

Генерация промежуточного кода

t1 = inttofloat(60) t2 = id3 * t1t3 = id2 + t2 id1 = t3

Оптимизация кода

Фаза машинно-независимой оптимизации кода пытается улучшить промежуточный код, чтобы затем получить более

качественный целевой код

t1 = id3 * 60.0 id1 = id2 + t1

Генерация кода

Генератор кода получает в качестве входных данных промежуточное представление исходной программы и

отображает его в целевой язык

LDF R2, id3 MULF R2, R2, #60.0 LDF R1, id2 ADDF R1, R1, R2 STF id1, R1

Инструментарий для создания компиляторов

1. Генераторы синтаксических анализаторов (YACC – Yet Another Compiler Compiler)

2. Генераторы сканеров (LEX, FLEX)

3. Средства синтаксически управляемой трансляции

4. Генераторы генераторов кода

5. Средства работы с потоком данных (Datalog)

6. Наборы для построения компиляторов

Языки программирования

• Императивные (процедурные)

BASIC, FORTRAN, Ada, Pascal, C, C++, Java, C#

• Языки функционального программирования

LISP, Miranda, Haskell

• Логические

Prolog

• Объектно-ориентированные

Smalltalk , C++, Java, C#

Декларативные

Критерии оценки языков программирования

Понятность

Надежность

Гибкость

Простота

Естественность

Мобильность

Стоимость

Описание языков программирования

Множество основных символов

Синтаксис (определяет правила составления корректных программ)

Семантика (задает смысловые значения конструкций языка, а также интерпретацию различных синтаксических конструкций)

Синтаксически-ориентированная трансляция

Лингвист Ноам Хомский (Noam Chomsky), профессор Массачусетского технологического института США

• Все языки людей восходят к одному «протоязыку»• Функции генерации и понимания фраз являются врожденными функциями мозга

Двухуровневая модель естественного языка

Схема понимания человеком предложений

Предложение Понимание

Структура предложения

Как происходит понимание двусмысленных предложений?

Порядок сменит хаос

Порядок сменит ХАОС ПОРЯДОК сменит хаос

Предложение

Именная группа

Группа глагола

ГлаголГруппа

дополнения

Сущ. Сущ.

Порядок сменит хаос

Предложение

Группа глагола

Именная группа

Группа дополнения

Глагол

Сущ. Сущ.

Порядок сменит хаос

Структура транслятора

• Построение структуры входной цепочки

Распознаватель

• Выражение смысла входной цепочки

Генератор

Входной

текст Выход

Recommended