Студопедия Главная Случайная страница Обратная связь

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

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




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

Система программирования Назначение и состав Используемые языки Языки разработки
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 и 2 поля.

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

2. Переменные

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

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

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

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

 

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 . КОНЕЦ.







Дата добавления: 2015-04-19; просмотров: 1302. Нарушение авторских прав


Рекомендуемые страницы:


Studopedia.info - Студопедия - 2014-2019 год . (0.003 сек.) русская версия | украинская версия