Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
вопросы - ответы 2010 финал.docx
Скачиваний:
6
Добавлен:
14.09.2019
Размер:
393.65 Кб
Скачать

38. Классификация систем программирования

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

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

Назначение и состав

Используемые языки

Языки разработки

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

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

Языки управления заданиями

Assembler, C (для визуализации)

2. Системы программирования низкого уровня

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

Состав: ассемблер (транслятор), редактор связей (компоновщик), загрузчик, простой текстовый редактор, отладчики, библиотека.

Ассемблер (+ иногда дополнительные языки)

Ассемблер, в настоящее время С

3. Системы программирования на универсальных языках

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

Языки высокого уровня (C, Paskal)

Раньше Ассемблер, сейчас С, Pasсal

4. Системы программирования на специализированных языках

Разработка прикладных программ. Состав: СУБД, САПР, системы удаленного доступа.

Специализированные языки (SQL, FoxPro, GPSS, HTML и т.д.)

Универсальные языки

5. Прикладные программы

Предназначены для решения конкретных задач пользователя.

Специализированные языки, реже – универсальные языки

39. Двухпросмотровый ассемблер. Компоненты.

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

Проблема обработки операторов имеющих ссылку на впереди определенные метки и переменные решаются с помощью 2х просмотров.

Задачей 1го просмотра является: 1) распределение памяти, т.е определение длинны команды и длины данных, заданных операторами. 2) Определение значений, меток, и переменных, т.е. адресов.

Задачей 2го просмотра является: 1) формирование кодов команд и данных. 2) Формирование объектного кода. 3) Формирование протокола трансляции.

В трансляторе используются следующие структуры данных. Используются следующие структуры данных(компоненты):

  1. Постоянные

    1. Таблица регистров - предназначена для указания перечня регистров, их типа и кодов.

Содержит поля: имя регистра, тип, код регистра. Ключ: имя регистра

    1. Таблица форматов команд - содержит информацию о перечне команд и способе

формирования кода команды. Поля: мнемокод команды, тип 1 и 2 операндов, длина команды, код операции, номер формата. В данной таблице ключ составной, включает 1 и 2 поля.

    1. Таблица директив - содержит информацию о перечне директив, и их форматах.

  1. Переменные

    1. Таблица символических имен: предназначена для хранения информации о

использования в программе переменных, метках, константах. Содержит поля: имя, значения, тип, перемещаемость, длина. Ключ: имя.

    1. Таблица литералов предназначена для хранения информации о литералах. Содержит

поля: значение литералов, адрес, длина, тип. Литерал это константное значение имеющее размер больше слова.

40. Двухпросмотровый ассемблер. Первый просмотр.

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

Проблема обработки операторов имеющих ссылку на впереди определенные метки и переменные решаются с помощью 2х просмотров.

Задачей 1го просмотра является: 1) распределение памяти, т.е определение длинны команды и длины данных, заданных операторами. 2) Определение значений, меток, и переменных, т.е. адресов.

Алгоритм 1го просмотра: 1) открытие исходного и результирующих файлов. 2. Выделение памяти для временных структур и инициализация переменных (счак:=0,№стр:=0) 3. Чтение очередной строки из файла исходной программ и №стр++. Если конец файла, то сообщение об ошибке и переход к пункту 10. 4) разделение строки ( выделение полей) 5. Если поле метки на пусто, то запись в таблицу символических имен 6. Если директива END, то п.10. 7. Определение типов операндов. 8. Определение команды. 9. Увеличение Счак на длину команды. Преход к п.3. 10. Конец.

41. Двухпросмотровый ассемблер. Второй просмотр.

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

Проблема обработки операторов имеющих ссылку на впереди определенные метки и переменные решаются с помощью 2х просмотров.

Задачей 2го просмотра является: 1) формирование кодов команд и данных. 2) Формирование объектного кода. 3) Формирование протокола трансляции.

Алгоритм 2го просмотра: 1. открытие исходного и результирующих файлов. 2. Выделение памяти для временных структур и инициализация переменных (счак:=0,№стр:=0) 3. Чтение очередной строки из файла исходной программ и №стр++. Если конец файла, то сообщение об ошибке и переход к пункту 12. 4) разделение строки ( выделение полей) 5. Если директива END, то п.12. 6. Определение типов операндов. 7. Определение команды. 8. Формирование кода команды. 9. Формирование карты Т и запись её в Объектный код. 10. Формирование строки протокола и запись в протокол трансляции. 11. Увеличение Счак на длину команды. Преход к п.3. 12. Конец.

43. Однопросмотровый и многопросмотровый ассемблер.

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

Пример:

Многопросмотровый. В большинстве ассемблеров выражение должно использовать уже определенные аргументы. Многопросмотровый ассемблер разрешает использовать в выражении аргументы, которые будут определенны далее. В многопросмотровом ассемблере реализуется несколько просмотров для определения значений в таблице символических имен и один просмотр в конце для формирования кода команды. Просмотры определения значений переменных и констант выполняется до тех пор пока: 1) Все значение определены в таблице символических имен. Можно формировать код команды. 2. На очередном просмотре не определенно ни одно новое значение. В программе ошибка.

Пример:

45. Однопросмотровый макропроцессов. Алгоритм.

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

Алгоритм однопросмотрового макропроцессора основан на изъятии из текста программы макроопределения, записи его в массив макроопределений с заменой формальных параметров в тексте на их номера, на извлечении макроопределения из массива и вставки его на место макрокоманды с заменой номеров на фактические параметры.

Алгоритм:

1. Открытие файла с текстом программы и создание рабочих структур.

2. Чтение очередного оператора из буфера, если буфер пустой, то чтение очередного

оператора из входного фаила. Если конец файла то выполнять пункт 6

3. Если считанный оператор является макро то

3.1 Определение макрокоманды и формирование списка аргументов.

3.2 Запись всех операторов в список макроопределений с заменой формальных

параметров на их номера до соответствующего оператора endm.

3.3 Добавляем записи в таблицу макроопределений с указанием имени,

указателем и последней строки. Переходим к пункту 2.

4. Если оператор макрокоманда то

4.1Поиск в таблице макроопределений и определение номера первой и последней строки макроопределения.

4.2 Формирование списка аргументов

4.3 Копирование всех строк макроопределений в буфер на место макрокоманды с

заменой номеров параметров на значение фактических параметров. Переход к пункту 2

5 . Перенос строки в выходную протокол и переход к пункту 2.

6 . КОНЕЦ.