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

кандидата технических наук
Сархан, Сами Ибрагим
город
Киев
год
1984
специальность ВАК РФ
05.13.11
Диссертация по информатике, вычислительной технике и управлению на тему «Методы и средства кроссовой реализации языков высокого уровня для микро-ЭВМ и микропроцессорных систем»

Оглавление автор диссертации — кандидата технических наук Сархан, Сами Ибрагим

ВВЕДЕНИЕ.

I.ОБЩАЯ ХАРАКТЕРИСТИКА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ МИКРОПРОЦЕССОРОВ И МИКРО-ЭВМ.

1.1. Характеристика аппаратных средств и системы команд микро-ЭВМ

1.2. Системы программирования МП.II

1.3. Средства реализации языков высокого уровня, ориентированные на программирование микро-цессоров.

2. ФОРМАЛЬНАЯ СПЕЦИФИКАЦИЯ И ОТЛАДКА ГРАММАТИКИ

ВХОДНОГО ЯЗЫКА.

2.1. Общая характеристика языка высокого уроЕня РВ-микро и среды его реализации

2.2. Доопределение синтаксиса входного языка

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

2.4. Средства дополнительной спецификации входного языка и их реализация при постройке! СПТ.

3. МЕТОДЫ ФОРМАЛЬНОГО ОПИСАНИЯ СЕМАНТИКИ ВХОДНОГО

ЯЗЫКА.

3.1. Средства формализации семантики

3.2. Распределение памяти.

3.3. Семантика вычисления выражений

3.4. Семантика основных управляющих структур

3.5. Семантика процедур.

3.6. Семантика операторов обмена.

4. КРОССОВАЯ ОТЛАДКА ПРОГРАММ МИКРО-ЭВМ.

4Л.Структура кроссовой системы подготовки программ.

4.2.Семантический процессор транслятора РВ-ПЛ/1.

4.3. Вопросы переносимости программ на носители микро-ЭВМ. 125.

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

Современный этап развития вычислительной техники характеризуется массовым производством микропроцессоров (МП) и микро-ЭВМ [39, 50, 80, 94, 96, Юб] , которые находят широкое применение в промышленности, науке и технике. За сравнительно короткое время сменилось несколько поколений микропроцессоров^ новейшие МП по своим возможностям приближаются к современным мини-ЭВМ и ЭВМ общего назначения. В то же время следует отметить, что основным фактором, сдерживающим применение МП в конкретны:с предметных областях, является сложность и трудоемкость разработки программного обеспечения для МП [41, 48 , 59, 63, 88, 108] „ вызванные отсутствием удобных для пользователя средств автоматизации программирования.

В большинстве практических приложений при разработке микропроцессорных систем (МПС) на основе МП используется язык ассемблера [32 , 70 , 9?] .

Среди языков высокого уровня [26, 28, 45, 51, 92, 98, 102, 103-105] , получивших распространение для програширования МП, можно указать язык ПЛ/М [4], который позволил упростить разработку программ для МП, однако в целом он ориентирован на системного программиста и требует хорошего знания архитектуры МП. Такие широкораспространенные языки программирования, как ПАСКАЛЬ [9б], БЕЙСИК [90, 93] , ФОРТРАН [бв] при разработке МПС используются редко, т.к., с одной стороны, рабочие программы, генерируемые трансляторами, обладают большой избыточностью, а с другой - в данных языках отсутствуют средства программирования задач реального масштаба времени ( РМВ ).

Перспективы дальнейшего роста производства МП позволяют сделать вывод о том, что в ближайшие годы широкий круг специалистов в различных областях промышленности будет использовать в своих разработках МП и микро-ЭВМ. Для успешного применения МП требуется наличие соответствующих инструментальных программных средств подготовки программного обеспечения ( ПО), основу которых должны составить универсальные и специализированные языки программирования высокого уровня. Таким образом, проблема разработки удобных и практичных средств реализации языков высокого уровня, ориентированных на МП и микро-ЭВМ, является актуальной.

Существуют два способа реализации языков программирования для МП: резидентные и кроссовые [[ 12 ] . Одним из достоинств кроссовых систем является их способность обеспечить разработку и отладку функциональных программ МП до поставки МП или микро-ЭВМ и о кончательной разработки аппаратурной части МПС [[64 ] . При погружении кроссовых средств разработки ПО в сре.цу операционной системы с разделением времени обеспечивается параллельная работа коллектива программистов, что сокращает сроки разработки программ для одной или нескольких МПС. Другое достоинство кроссовых систем состоит в том, что они позволяют за счет усложнения кросс-транслятора получать рабочие программы МП высокого качества [55] , что является важнейшим фактором при разработке МПС критичных по времени.

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

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

Диссертационная работа состоит из введения, четырех глав и заключения, изложенных на 141 страницах машинописного текста, содержит 26 рисунков, 5 таблиц, список литературы из 117 наименований и приложения.

Заключение диссертация на тему "Методы и средства кроссовой реализации языков высокого уровня для микро-ЭВМ и микропроцессорных систем"

Выводы по 4-й главе

1. Для проведения кроссовой отладки исходных РВ-программ была предложена структура системы кроссовой подготовки программ.

2. В качестве языка ИЭВМ был выбран язык ПЛ/1, обеспечивающий удобство проведения кроссовой отладки и простоту задания семантики отладочного транслятора.

3. Для создания программного комплекса системы кроссовой подготовки была разработана схема генерации.

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

ЗАКЛЮЧЕНИЕ

Проведенные в диссертационной работе исследования позволяют сформулировать следующие результаты:

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

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

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

4. Разработаны алгоритмы задания семантики для основных управляющих структур входного языка-, ориентированного на семантику машинных команд 8-разрядного МП.

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

6. Создана библиотека ассемблерных текстов для эффективной реализации семантики входного языка.

7. Разработаны средства кроссовой отладки исходных программ и алгоритмы выдачи отлаженных ассемблерных программ на носители МП и микро-ЭВМ.

8. Объем разработанного ПО составляет 5000 операторов языка ПЛ/1 и 1200 команд языка ассемблера МП К580ИК80.

Библиография Сархан, Сами Ибрагим, диссертация по теме Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей

1.Айзенберг Я.Е.,Вельбицкий И.В.,Конорев Б.М» и др. Автоматизированная система производства программ Син-терм. - Управляющие системы и машины, 1980., №1,с. 16-21.

2. Акуловский В.Г., Кудрин В.Г., Терентьева Г„Н. Параметрическая система проектирования математического обеспечения систем реального времени. Управляющие системыи машины,1981, № 1,с. 61-64.

3. Александров А.Л., Бабенко Л.П., Кауфман В.Ш.и др. Проблемы стандартизации языков программирования.- Управляющие системы и машины, 1983, № 4,с. 14-18.

4. Алексенко А.Г.»Галицын A.A., Иванников А.Д. Проектирование радиоэлектронной аппаратуры на миь:ропроце ссорах.-М.: Радио и связь, 1984.- 272 с.

5. Алиев Г.М., Кулиев Г.Р., Керимова Х.З. Об одной системе построения трансляторов.- Управляющие системы и машины, 1984, Р 2,с.77-80.

6. Ананьевский С.А., Бедненко В.В., Колинько А.Ф. 0 семантической разрешимости неоднозначностей КС-грамматик.-Вестник КПИ "Автоматика и электроприборостроение", №18, Киев, "Вища школа",1981, с.51-55.

7. Ананьевский С.А., Самофалов К.Г., Стеблянно В.Г. и др. Параметрическая система трансляции ПТ КПИ-4. Материалы межотраслевого фонда алгоритмов и программ АСУТП ПКБ АСУ Минприбор СССР, Киев, 1979.

8. Ананьевский С.А., Стеблянко В.Г., Бедненко В.В. и др. Параметрический транслятор в системе автоматизированного проектирования математического обеспечения.- Механизация и автоматизация управления, 1975, №4,с.19-24.

9. Ананьевский С.А. Язык описания вычислительного процесса в АСУ ТП.- Механизация и автоматизация управления, 1976, № 2, с.43-46.

10. Ананьевский С.А. и др. Метаязыковое обеспечение параметрической транслятора.- Вестник КПИ "Автоматика и электроприборостроение", 1980, № 17, с.73-76.

11. Ахо А., Ульман Дж. Теория синтаксического анализа, перевода и компиляции: В 2-х томах. Пер.с англ. /Под ред. Курочкина В.М.- М.: Мир, 1978, 1104 с.

12. Балашов Е.П., Пузанков Д.В. Микропроцессоры и микропроцессорные системы /Под ред.Смолова.-М.: Радио и связь, 1981.328 с.

13. Ведненко В.В. и др. Об использовании ПЛ/1 для программирования функциональных алгоритмов параметрического транслятора.- Вестник КПИ "Автоматика и электроприборостроение", 1979, Р 16,с. 54-57.

14. Берзин Б.А., Цывинский В.Г. Подход к программированиюсистем реального времени на базе микро-ЭВМ.- Управляющие системы и машины, 1981, № 5,с. 76-82.

15. Бею Т.В., Механикова М.П.,Сархан С.И. Реализация режима диалога в кроссовой СПТ при настройке на семантику входных языков / В сб.: Материалы шестой Межресцубликанской школы-семинара "Интерактивные системы" ( Батуми).- Тбилиси, 1984, с.350-360.

16. Болье Л. Методы построения трансляторов. /В сб.: Языки программирования. М.: Мир, 1972, 406 с.

17. Братчиков И.Л. Синтаксис языков программирования. /Под ред. Лаврова С.С. М.: Наука, 1983.- 384 с.

18. Вельбицкий И.В. Метаязык грамматик. Кибернетика,1979, № 3, с.47-63.

19. Вельбицкий И.В. Технология производства программ на базе

20. R-метаязыка. / В кн.: Системное теоретическое программирование. Кишинев, Кишиневский госуниверситет, 1974, т.1, с. 270-271.

21. Вельбицкий И.В., Ходановский В.Н. Технологический комплекс производства программ на машинах ЕС ЭВМ БЭС М-6. М.: Статистика, 1980.- 264 с.

22. Во лохов В. И., Воронов C.B., Горбачик А. П. и др. ДЕШПС -автоматизированная система построения языковых процессов. УС и M, 1984, № 3,с. 69-73.

23. Вострикова З.П., Митин С.Т. Курс операторного обслуживания ОС ЕС ЭВМ. М.: Наука, 1983.- 248 с.

24. Галкин И.М., Образкова H.JI., Романов В.М. Система построения трансляторов МАРС-СПТ. Управляющие системы и машины, 1983, № 6,с. 68-71.

25. Гальперин М.П., Масленников Ю.А. Об использовании средств отладки целевых программ семейства микро-ЭВМ широкого назначения.- Управляющие системы и машины, 1979, № 6,с.51-56.

26. Гибсон Г., Лю Ю-Ч. Аппаратные и программные средства микроЭВМ. Пер. с англ. /Под ред. Сташина В.В. М.: Финансы и статистика, 1983.- 255 с.

27. Головач В.И. Применение проблемно-ориентированных языков при управлении технологическими процессами.- Программирование, 1977, № 1,с. 42-48.

28. Головач В.И. Система автоматизации программирования для группового управления процессами.- Управляющие системы и машины, 1976, № 5,с. 65-68.

29. Головач В.И.,Котельников Ю.Н. КАУТ-специализ:ярованный язык для группового управления процессами.- Управляющие системы и машины, 1976, № 2, с.66-73.

30. Головач В.И.,Соболь В.М. Языковые средства диспетчера управления задачами операционных систем реа,пьного времени.

31. Управляющие системы и машины, 1974, № 5,с .51-57.

32. Гонца Н.Г., Маричук М.Н.,Бумбу В.Г. Инструментальный комплекс Т- semol . Кишинев, "Штинца", 1976.- 92 с.

33. Гребенников J1.K., Лебедев В.Н. Решение задач на ПЛ/1 в ОС ЕС. М.: Финансы и статистика, 1981.- ЗР2 с.

34. Григорьев В.Л. Программное обеспечение микропроцессорных систем.- М.: Энергоатомиздат, 1983.- 208 с.

35. Грис Д. Конструирование компиляторов для цифровых вычислительных машин. Пер. с англ./ Под ред.Баяховского Ю.М., М.:Мир, 1975.- 544 с.

36. Гришин Ю.П., Казаринов Ю.М., Катиков В.М. Микропроцессоры в радиотехнических системах /Под ред. Казаринова Ю.М.-М.: Радио и связь, 1982,- 280 с.

37. Давиденко К.Я. Язык программирования для задач управления производственно-технологическими процессами / В сб.: Автоматизация проектирования систем управления, 1973, с.125-145.

38. Дайитбегов Д.М., Дуброва И.Г. Организация наборов данных в ОС ЕС ЭВМ. М.: Финансы и статистика, 1982.- 277с.37« Деогирихер А.Д. Вопросы параметрической реализации языка Паскаль. Дис.на соискание ученой степени канд. техн. наук.- Киев: 1981.- 135 с.

39. Донован Дж. Системное программирование. Пер. с англ. /Под ред.Райкова Л.Д.- М.:Мир,1975.- 543 с.

40. Дэвид Лаффит, Кари гуттач. Расширение области применения 16-разрядных микропроцессоров благодаря быстродействующей памяти на кристалле. -Электроника, 1981, №4.,с.78-85.

41. Зелковиц М., Шоу А., Гэннон Дж. Принципы разработки программного обеспечения. Пер. с англ. Под ред. Пашкеева С.Д.-М. :Мир, 1982.- 368 с.

42. Иванов Ю.В., Масленников Ю.А., Чебыкин Н.Е.и др. Вопросы проектирования систем автоматизации, разработки программ для микро-ЭВМ. Управляющие системы и машиш, 1978, №5, с. 39-42.

43. Ингерман П. Синтаксически ориентированный транслятор. Пер. с англ. / Под ред. Китова А.И.- М.: Мир, 1969. 176 с.

44. Кахро М.И. и др. Инструментальная система программирования ЕС ЭВМ ( ПРИЗ).- М.: Финансы и статистика,1980.- 158 с.

45. Квиттиер П. Задачи, программы, вычисление, результаты. Пер. с англ. / Под ред. Мартынюка В.В.- М.:Мир, 1980.422 с.

46. Кибиткин В.В. Особенности операционных систем микро-ЭВМ.-Управляющие системы и машины,1982, Р 2,с. 31-35.

47. Кипдол Е. Язык высокого уровня для программирования микропроцессоров.- Электроника, 1974, №13,с.33-41.

48. Кнут Д.Э. Семантика контекстно-свободных языков. / В кн.: Семантика языков программирования.- М.:Мир, 1980, с.137-161.

49. Кобылинский A.B., Сабадаш И.Г., Тесленко А.К. Программное обеспечение микро-ЭВМ на базе однокристалльного микропроцессора.- Микроэлектроника и полупроводниковые приборы

50. Москва), 1979, № 4,с.82-95.

51. Колинько Р.Ф. Система построения трансляторов.- Дис. на соискание ученой степени канд.техн.наук.-Киев:1981.- 202с.

52. Коффрон Дж. Технические средства микропроцессорных систем. Пер. с англ. М.: Мир, 1983.- 340 с.

53. Кригер М., Плаугер П. Универсальный язык С для малых компьютеров.- Электроника, 1980, № I,с.44-51.

54. Лавров С.С. Методы задания семантики языков программирования. Программирование, 1978, № б,с.3-10.

55. Лебедев В.Н. Введение в системы программирования.- М.: Статистика, 1975.- 312 с.

56. Левенталь Л. Введение в микропроцессоры. Пер. с англ. /Под ред. Сташина В.В.- М.: Энергоатомиздат, 1983.- 464с.

57. Липаев В.В., Штрик А.А. Основные концепции кросс-системы автоматизации программирования и отладки сложных комплексов программ на базе ЕС ЭВМ. / В кн.: Технология создания программных средств АСУ. Центр программ систем.- Калинин, 1980,с.248-252.

58. Липаев В.В. Проектирование математического обеспечения АСУ.- М.: Советское радио, 1977.- 400 с.

59. Липаев В.В., Серебровский Л.А.Филиппович В,В. Система автоматизации программирования и отладки комплексов программного управления ЯУ31-6.- Программирование, 1977, №3, с. 87-94.

60. Липаев В.В., Качалов Ф.А. Система автоматизации технологии разработки комплексов управляющих программ для микропроцессоров и микро-ЭВМ ( ТЕМП).- Управляющие системыи машины, 1980, № I,с.32-36.

61. Липаев В.В. Состояние и проблемы производства программного обеспечения для систем управления, и обработки информации.- Управляющие системы и машины, 1980, №1,с.9-16.

62. Льюис Ф., Розенкранц Д.,Стирнз Р. Теоретические основыпроектирования компиляторов. Пер. с англ. / Под ред. Агафонова В.Н. М.: Мир, 1979.- 656 с.

63. Макаров В.П. Атрибутные квазитранслирующие грамматики и их реализация в системе построения трансляторов САГЕТ.-Программирование, 1983, № 2,с.49-55.

64. Маккиман У., Хорнинг Дж.,Уортман Д. Генератор компиляторов. Пер. с англ./Под ред.Савинкова В.М. М.:Статистика, 1980.- 528 с.

65. Малиновский Б.Н., Слободянюк А.И., Погореный С.Д. Системное математическое обеспечение микро-ЭВМ и отладочной системы на базе микропроцессора К580ЙК80.- Управляющие системы и машины, 1982, №-3, с.30-35,,

66. Малиновсний Б.И., Липаев В.В., Слободянюк Т.Ф. и др. Справочник по цифровой вычислительной технике ( программное обеспечение). Под ред. Малиновского 33.И.- К.: Тех-н1ка, 1981. 207 с.

67. Мейер Б., Бодуэн К. Методы программирования в 2-х томах. Пер. с франц. /Под ред. Ершова А.П.- М.:Мир, 1982.-724с.

68. Микитин А.И., Шурубура В.П. Об особенностях входных языков для вычислительных систем, работающих в реальном масштабе времени,- Управляющие системы и машины, 1973, № 4,с. 26-33.

69. Пейгин Ф. Практическое руководство по АЛГОЛУ-68. Пер. с англ. /Под ред. Ершова А.П. М.: Мир, 1979.- 240с.

70. Поса Дж. Программирование микрокомпьютерных систем на языках высокого уровня.- Электроника, 1979, т.52, №2, с.22-32.

71. Пратт Т. Языки программирования: разработка и реализация . Пер. с англ. / Под ред.Баяновского Ю.М. М.: Мир, 1984, - 576 с.

72. Рауд Р.К.,Тамм Б.Г. Состояние в области программирования для микро-ЭВМ.- Программирование, 1982, №5,с.31-44.

73. Редько В.Н.,Ющенко Е.Л. Алгоритмические языки и транслирующие системы.- Кибернетика, 1967, №5, с.87-91.

74. Редько В.М. Семантические структуры программ.- Программирование, 1981, № 1,с. 3-19.

75. Самофалов К.Г., Ананьевский С.А., Стеблянко В.Г. Автоматизация проектирования математического обеспечения управляющих ЦВМ.- Механизация и автоматизация управления, 1976, № 3,с. 37-41.

76. Самофалов К.Г., Колинько Р.Ф., Бею Т.В. Вопросы мета-программирования в параметрических системах трансляции.-Вестник КПИ "Автоматика и электроприборостроение".20, Киев. "Вища школа",1983, с.80-82.

77. Соучек Б. Микропроцессоры и микро-ЭВМ. Пер. с англ. /Под ред.Петренко А.И.- М.: Советское радио,1979.- 520с.

78. Стеблянко В.Г., Тригуб Н.Ф.,Бею Т.В. Диагностика в синтаксически ориентированном анализаторе. Вестник КПИ "Автоматика и электроприборостроение",1981, № 18.

79. Уокерли Дж. Архитектура и программирование микро-ЭВМ:

80. В 2-х книгах. Пер. с англ. /Под ред.Филиппова А.Г. М.: Мир, 1984.- 847 с.

81. Фельдман Дж., Грис Д. Система построения трансляторов. %/В сб.: Алгоритмы и алгоритмические языки,№ 5. М.: Вычислительный центр АН СССР, 1971, с.37-56.

82. Фритч В. Применение микропроцессоров в системах управления. Пер. с нем.- М.: Мир, 1984.- 464 с.

83. Фролов Г.Д., Омонин В.Ю. Практический курс программирования на языке ПЛ/I.- М.:Наука, 1983.- 384 с.

84. Фуксман А.Л. и др. Основы разработки трансляторов. Рос-тов-на-Дону,1974.- 170с.

85. Хантер Р. Проектирование и конструирование компиляторов. Пер. с англ. / Под ред. Савинкова В.М.- М. .'Финансы и статистика, 1984.- 232 с.

86. Хилбурн Дж., Джулич П. Микро-ЭВМ и микропроцессоры.

87. Пер. с англ./ Под ред. Пашкеева С.Д.- М.: Мир, 1979.-464с.

88. Хопгуд Ф. Методы компиляции. Пер. с англ. /Под ред. Любимского Э.З. и Мартынюка В.В.- М.: Мир, 1972.- 160 с.

89. Barber Miltone. PARSLEY: a new compiler-compiler.Conf. Software Dev.Tools,Techn. and Alternatives.Arlington, Va, 25-28 July 1983. Proc. Silver Spring,Md, 1983,pp,232-241.

90. Bass C. "PLZ:ASM-A Structured Assembly Language for a Family of Processors".- Zilog,I977.

91. Bernard R. More handware means less software."IEEE Specturn",I98I, I8,N.I2, pp.30-37.

92. Bernard R. Computers. I.Micros and softwar«."IEEE Speo-turn",1981,18,N.9,pp.28-41.

93. Bonzon M.,Tireford M. Basic M and EXOR set boost

94. MC programming."Electron Des", 1980, 28,N.I5,PP.W-I50.

95. Burkowski F.J., Mackey W.F. Micro-o: a universal high level language for microcomputers. "MINI 77.Proc.Int. Symp. MINI and Micro Comput.»Montreal,1977,New York,1978,pp.27-31.

96. Cushman R.H. I-Chip M Cs, high-level languages Combine for fast prototyping.- "EDN",I980, 25, N. 14,pp.89-96.

97. Daien Bernard B. Microcomputer Programming.,11 BASIC, Electron.Techn./Dealer"1982,104, N.2, pp.27-30.

98. Elmor J«, Hiller D., Sekwabe J, The impact of 16-bit microprocessors on software development tools. "Comp. Des.", 1981, 20,N.6, p.III-II5.

99. Flynn George. For programm creation abd debugging development systems for MP/MCs."Prod.Eng.", (USA),1979,50, N.6,pp.43-47.

100. Mantyla Hartti. Compiler-compiler as a tool for CAD systems development."Comput.Appl.Prod.and Froc./lnt. IFLP Conf.CAPE 83,Amsterdam,25-28 Apr. ,I98VPrepr.Ptr" . Amsterdam e.a., 1983,pp.471-483,

101. Marti Fed. The little META translator writing systems "Software:Proct-and Exper.",1983,13, N.IO, pp.941-959«

102. Moralee D. High level languages:a hardware -man's vilw. "Electron and Power",1981,27,N.t 2,pp.130-135.

103. Murray G.G., Gray P.M.D. Using language C for realtime control of microprocessor system with small memory. "J.Microcomputer Appl", 1982, 5,N.I, pp.I-I2.

104. May p.,Mecklenlurg J, PROTOL.An Algol-based language for process controf>."Chem.Engug.J." ,I97I,N.2,

105. Rooney Michael. High level languages- write it once, run it only any microprocessor."Euromicro J.", 1980, 6,TT.I, pp.28-33.

106. Scherer Klaus. V Changing to 16 bits. "Siemens Components", 1983,18,N.3.,PP.86-92.

107. Schindlern.Pick a computer language that fits the job. "Electron.Des.",1980, 28,N.I5,pp.62-78.

108. Snook T.,Riggins C."Evaluation of PLZ/SYS I.0,Zilog. Technical Report,Feb,1978.

109. Soi I.M., Aggarwal K.K. On reliable software development for microprocessors."Microelectron.and Reliab."?l980, 20, N.3., PP.273-279.

110. Urda Bordoy Macro 0. LADIS: and languceje albgoritmico paropp dicevocinst-rumentacion de sistemes en timporeal (SAD PT) en microprocesadores."Conntr.Cibern Yaktom", 1982,16,N.4,pp.29-36.

111. Wirth N. MODULArA language for Modular Multiprogramming. Institut for Informatik,Zürich,1976.

112. ISIS-II User's Guide. Santa Clara,"Intel" Corporation,1979,PP.3-53.

113. PUM-80 Programming Manual,"Intel",1978.

114. PL/M-86 Programming Manual,"Intel",1978.

115. M6800 Resident MPL Language Reference Manual»Motorola Inc.,1978.

116. Report on the Programming Language PLZ,Zilog,1978. 117. SMAL/80 UseE's Manual,Chromod Associates,1978.

117. СКАЛЯРНЫЕ-ПЕРЕМЕННЫЕ "| ; = ' 'СПИСОК*ИДЕНТИФИКдТОРОВ ' ' ' 'АТРИБУТЫ-ЙАННЫХ ' 'список-иДентификаторов":: = "идентификатор"

118. СПИСОК-ИДЕНТИФИКАТОРОВ", "ИДЕНТИФИКАТОР" ''ИДЕНТИФИКАТОР " :I=Я2

119. АТРиБУты-ДАННЫХ"! : = "ТИП-ЗНАЧЕНИЯ " ' 'ИНИЦИАЛИЗАЦИЯ ' ' "КЛАСС-ПАМЯТИ '"'ОБ/)АСТЬ*ДЕйСТВИЯ"тип-значения": : = "пусто"integer "//"real "//"bit "//»»char ""длина" " n у с т о " :; = й 0цмна":;с''пуст0"//("размерн0сть") "размерность": ; = "эыра»ение"

120. ИН ИЦИАЛ ИЗ АМИЯ" ::= "INITIAL "("СП ИСОК-ЗНАЧЕНИЙ")//" ПУСТО" "СПИСОК-ЗНАЧЕНИЙ ",' : = ' 'ЭЛЕМЕНТ-СПИСКА" ЗНАЧЕНИЙ ' ' // "СПИСОК-ЗНАЧЕНИЙ", "ЭЛЕМЕНТ-СПИСКА-ЯН АЧЕНИй "

121. ЭЛЕМЕНТ-СПИСКА^зНАЧЕНИЙ":: = "П0ВТ0РИ ТЕ ль ""КОНСТАНТА" //"ПОВТОРИТЕЛЬ"!" СПИСОК-ЗНАЧЕНИЙ") "ПОВТОРИТЕЛЬ ":; = "ПУСТО "// ( "ВЫРАЖЕНИЕ ") "КОНСТАНТА": : = ''ЦЕЛОЕ" // "ВЕЩЕСТВЕННОЕ ' ' // "БИТОВОЕ ' ' // "СИМВОЛЬНОЕ ' '

122. ОБОБИ|ЕННЬй«МНОциТЕлЬ "I : = "ОБОБЩЕННОЕ-ПЕРВИЧНОЕ ' '// "05 обще иное-первичное " "3.0,0 " " ОБ ОБМЕННОЕ-ПЕРВИЧНОЕ "об обменное-первичное "!: г "выражение "// "обобщенное-первичное'4 1 "выражение"

123. УКАЗАТЕЛЬ-ПРОЦЕДУРЫ"// < 'ИДЕНТИФИКАТОР-СОБЫТИЯ ' ' //("ОБОБЧЕННОЕ-ВЫРАКЕНИЕГ') "ПЕРЕМЕННАЯ ":: = "ПРОСТАЯ-ПЕРЕМЕННАЯ"

124. ФАКТИЧЕСКИЙ~ПАРАМЕТР"1: = "0Б0БШЕНН0Е-ВЫРА)«ЕНИЕ"//

125. СОВОКУПНОСТЬ-ФОРМАЛЬНЫХГПА РАМЕТРОВ" ВОЗЗРАЩАЕМОЕ-ЗНАЧЕНиЕ" 'Э03ВРАУАЕМ0Е-ЗНАЧЕНИЕ'':: = "ПУСТ0"г гhe turns »4 "тип-значений")

126. СПИСОК-ВЫВОДА "."ЭЛЕМЕНТ-ВЫВОДА"

127. ЭЛЕМЕНТ-ВЫ30ДА":: = "ВЫ РАНЕНИЕ" //"ИДЕНТИФИКАТОР-МАССИВА" //"ЦИКЛИЧЕСКИй-ЭЛЕМЕНТ-ВЫВОДА" "ЧИКЛИЧЕСКИЙ-ЭЛЕМЕНТ-ВЫВ0ДА";.Г = ( "СПИСОК-ВЫВОД А" "ЗАГОЛОВОК-ЦИКЛА ")

128. ОТКРЫТИЕ-ФЛЙЛА ": ; r"OPEN" "ЗАПРОС " "ПРИЗНАК-ФАй/lA "

129. ЗА П РОС" :; = ("л0Г И ЧЕСКИй-НОМЕР", "АДРЕС")чопер а тор-обмена-с-файла ии " : : = "открытие-файла"'/ "создание-файла " 'закрытие-файла '' //"оператор-чтения'' //"оператор-записи''1. Г И -г"пусто ' 'создание-файла": : = "create""запрос"

130. SPACE"( ' 'ВЫРАЖЕНИЕ ' ' )

131. ОПЕРА ТОР, ОБМЕН А-С-У СО'': : = "ЕВ ОД-АН А лог-данных" //"ВЗОД-ДИСКРЕТ-ДАННЫХ ' ' // ' 'Вз1ВОД-уС0 ' '

132. I ÍIT " ( "СПИСОК-УПРАВЛЯЮШИХ-СЛОВ")

133. СПИСОК-ЦИКЛА";: = "ЭЛЕНЕНТ-СПИСКА-ЦИКЛА "

134. СПИСОК-ЦИКЛА "."ЭЛЕМЕНТ- СП ИСКА-цикла"

135. ЭЛЕМЕНТ-СПИСКА-ЦИКЛА": : = "ВЫРАЖЕНИЕ" //"ЭЛЕМЕНТ-ТИПА-ПРОГРЕССИИ" //"ИТЕРАЦИОННЫЙ-ЭЛЕМЕНТ"элемент-типа-прогрессии": : = " вы ра*е НИ Ef'ii То» "вь Раке ни е""шаг'у "ШАГ " :; г' »пусто "/ " 3 Y " "ВЫРАЖЕНИЕ ' '

136. ИТЕРАЦИОННЫй-ЭЛЕМЕНТ":: = "ВЫРАЖЕНИЕ" »»WHILE"

137. ПРОЦЕДУРА ":: = f »ОПИСАНИЕ-ПРОЦЕДУР"

138. ОПИСАНИЕ-ФОРМАЛЬНЫХ-ПАРАМЕТРОВ" Г Js "FOR MA L*'" ОПИСАНИЕ-ОБЬЕКТОв"

139. ОПИСАНИЕ-ВХОДОВ".' : = "ТИП-ВХ0ДА"" СПИСОК-ВХОДОВ"'ТИП- ВХОДА ' ' ; ; ="PROCESS"//"PROCEDURE"

140. СПИСОК-ВХОДОВ ":: = "ВХОД "/ / "СПИСОК-ВХОДОВ "ВХОД "

141. Зход":: = "список-идентификаторо8""характеристиКи"

142. ПРОЦЕДУРЫ СЕМАНТИЧЕСКИ УПРАВЛЯЕМОГО АНАЛИЗА

143. CLUDE В IRT(SPC) ;Х#РР='PPRs ' ;1. TITLE#= »' 'DECP " ';r charu #r='return(0) ':ocl ip ext;

144. DCLFPu;R BlTflJEXT, /»♦ЛАГ-ФОРНАЛЬНЫХ-ПАРЛИЕТРОВ*/

145. PR,MD,TP,RF,LN)FIXED BIN ( 15)EXT,expr,stnl,decs)entry(fixed в i n ( 1 5 ) ) re turn s ( f i xed fl i n i 1 5 ) ) 5 x i mcuude birt(sprd) ; ^include birt(sprsj;семантические определения*/ l( 145) :/*<заг0л0в0к-ПР0иЕССА>::=<идентификатор»

146. СОРОКУПНОСТЬ-ФОРМАЛЬННЫХ-ПАРАМЕТРоВ><ПРИОРкТЕТ>*/il. tnip = ^r(k3) ; if rep(ipp = 0 then so to ieriif i p » e s 1 then rep < ip| = 1 ;к 4 > :/*<окончание>;:=<идентификатор-метки»;»end»*/md = 9 ; # = spr ( к 1 );

147. HD = 6ÏTP,RF = 0ïii = SPRiK2) ;# = SPR(K1) s

148. I p> ES r THEN RE P(Г P)r 1 ;1. IPc=ESl THEN DOS

149. REP(IP)= pTi ;IPsPTIIPTIsPTI♦ii END I

150. U(27 ) :/*<тип-значения>: :b»char»<длина>л/

151. MD = 8 i # = SPR(к i);«R; l(29 ) :/*<длинд>: ;=<пусто>*/ TP= 15 * R;l(33 ) :/*<длинд>:: = (<размерность>)*/= s pr ( к 1 ) uri L(31 ).'/*<PA3MEPHOCTb>::s*BHPAKEHHE>*/= EXPR(Kl); TP = FR ; #R ; ZINCLUDE BIRT(SPF) |

152. DEC'-./ *« ОПИСАНИЕ- ДАННЫХ;»*/

153. CLUDE BIRT(SPC)JXfPPs'PPRS'JDCL FR FIXED В I N С 1 5) EXT? DCL EXPR ENTRY(FIXED В I N(15) jRETURNS(FIXED BIN(15))S ^INCLUDE 3IRT i SPRO) J вдгшэм.

154. CLUDE BlRT(SPRS)}X#TITLEf*='"DECS'"| *«)CL, #R CHAR;*iPR = 'RETURN(0) DCL FPAR BITillEXTt '*ФЛАГ-ФОРЦАЛЬНЬгО-ПАРАМЕТА*/

155. STNL:/*<CnnCOK-операторов»*/

156. CLUDE BIRT(SPC) 5X#PPs'PPRS4 /¿INCLUDE BIRT(SPRO) 1

157. X INCLUDE BlRT(SPRS> IX#TITLEifr"i'STNl.f"! KDCL #R CHAR ; !i#R='RETURN (Й )'; OCL MO FIXED В I N( 15)EXT;

158. СЕМАНТИЧЕСКИЕ-ОПРЕДЕЛЕНИЯ*/

159. И 149) ••список-ОПЕР А ТОРОВ» : :=<спиоок-опбраторов>,<опбр ATOP»*/1. SPR(К2);1.i4e):/*<cnnc0K-0nEPAT0P0B»::=<0nFPAT0P»*/ *=spp(кi);*R;1. 151) :/*< ОПЕРАТОР»: !=<ИДЕНТИ«ИКАТОР-МЕТКИ>;<ОПЕРАТС1Р> + /

160. MD = 9iA' = SPR(K2);# = SPR(Kl);#R; L( 152) :/*<ИДЕНТИФИКАТОР-МЕТКИ»: :=<иДЕНТИФикА ТОР»*/1.=SPR(к 11¡IF REP<jP)"=0 THEM СО ТО LER?

161. PRV = ~PRv i ):/* < о з >:: = + */первичное>;:=<kohctahta>4/spr(k1) ;196.» :L*97> :L (98) :U(99) :/«*<первичное>: .

162. УКАЗАТЕЛЬ-ПР0ЦЕДУРЫ>!1<ИДЕНТИФИКАТ0Р-С0БЬ!ТИЯ>1! <<ОБОБиЕННОЕ-ВЫРАКЕНИЕ>)*/

163. PRV = 0;PUT SKIP LIST( 'НЕЛОПУСТИМОЕ-ВЫР4»ЕНИЕМ i#R; ):/*<константа»j:=<мелое>*/= SPR{К 1) 5 #R ;1.42) :L(43):/*<констднта>::¿<bewectbehhoe»ii¿битовое» i i1. СИМБОЛЬНОЕ>*/

164. CN Tr f 0';pu T SKIP LIST('НЕПРАВИЛЬНОЕ-КОНОТАНТА 4 }#R! /*<ЦЕЛОЕ>.' :=<ИЕЛОЕ*<ЦИфРА>*/

165. SPR(K2); /*<ЦЕЛОЕ>::=<ЦИФРА>*/ ic = SPR (кi) ;nk = NK*I ;i»R; /*<иИ<ЬРА>.':=<ВОСЬМЕРИЧНАЙ~ЦИФРА>#/ * = spr (Kn14 8) !/*<ЦИФРА»: := 8I I 9 */

166. AL т : PROC(и » V J RETURNS(FIХЕО В I N i 15) ) ! /* ПРОЦЕДУРА ВЫБОРА ВОСХОДЯЩЕЙ АЛЬТЕРНАТИВЫ

167. ПРИ СИНТАКСИЧЕСКИХ НЕОДНОЗНАЧНОСТЯХ */1. ПАРАМЕТРЫ */dcku.vjfixed в i n (15); ВНЕШНИЕ ПЕРЕМЕННЫЕ */

168. OCL((LAMJESIINITILWST.PPS6)FIXED BIN (15) , fPTOiPDA)POINTER)EXT i /* ВНЕШНИЕ СТРУКТУРЫ #/

169. REР(R)s0 THEN CO TO ЕХд: ELSE CO TO FIN; IF SEPfR)-1^ THEN R = REP(R) ; FIN:MD = ABS(TID(R) .MODE) iEND PVT; /* ВНУТРЕННИЕ ПЕРЕМЕННЫЕ */

170. DCL (R,MD ) FIXED BIN( 15) i /« ВНУТРЕННИЕ МАССИВ */

171. GO TO EX A ! 1.(4).' /»СПИСОК ВВОДА -ИДЕНТИФИКАТОР*/ 1.(5) : /»СПИСОК ВЫВОДА -ИДЕНТИФИКАТОР*/ L(6>: /»БУФЕР ОБМЕНА -ИДЕНТИФИКАТОР*/call pvt;

172. MO=l!MD = 2 THEN RETURN{ 1 33) i IF MO = 3 IMD = 4 THEN RETURNfl32) Jexa:return«137);1. END ALT;

173. MSlD(U)CHAR{5)INIT('A','B','C','D','E','H',a'«m ' , ' p s w ', 'pc', ' s p ' , ' в с ', ' d e ' t 'hi') > dcl(msp,lsp)ext,vlhas fixed в i n ( 1 5 ) ex t , parmpf!с в i t ( 1 ) ext 5 dcl bmac(50)bit( 11static ext, / + для обработки macros*/

174. Do 11=701 TO NIT; DO 12=1 TO 14;

175. T 10 С I 1) .NAME = MSID(I2)THEN TJDdl) .NAME='??'I J T I D ( I 1 ) . N A M E !end ; end ; #=spr (ki) ;iCR;

176. Ь(2в9):/*<ПР0ГРАММА>::=<ПР0ЦЕДУРА>*/r ;1.294) :/*<ПРОЧЕДУРА>; •=<ОПИСАНИЕ-ПРОУЕДУР>*/ #R;li 2 ' ^¡mcis"0" :="рросе55,,<заголовок-процесса>;<список-описаний-процесса><список-операторов><окончание>*/on endfile(seal ib)begin ;

177. CLOSE FILE(SESLIB) ¡GO TO ENDOVT } END!

178. SPR (K4) ;C0M,C0P=^JMP';C0M.PAR='?STR »НАЧАЛО СПИСКА ОПИСАНИЙ nf OUECCA', CALL ^RA ;

179. DECPI f КЗ j ;COM.LAB='?0BX'SCOM,COPs'NOP';

180. COM,PAR = ' ¡НАЧАЛО-СПИСКА^ОПЕРАТОРОВ.ПРОЦЕССА '(CALL WRA;1. STNLI (К 2) ;#sSPR(Kl) ;

181. INDEX(PARM» 'NO')^ = 0 THEN DO! Do 1 = 1 TO 150 WHILE (SUBPR ( I ) n= (5) ' 'H COM,COP = SUBSTR(SUBPR(I) ,2,4) (CALL WR A { END ! EN!) J IF INDEX(PARM. 'YES ')- = 0 THEN DO! AB3:READ FILE(SESLIB)INTO(S3);

182. SUBSTR(S3,1,1)в' ' THEN GO TO AB3| A32;D0 J1 = 1 TO 150 WHlLE(SUBPR(Ji)",s(5) ' ')?

183. J2 = INDEX(S3, ' ') ; ,i F SUBSTR(S3,J2-i, 1) = '." THEN J2 = J2-l; IF SU0STR(S3.1iJ2«l)=SUBPR(JJ)THEN GO TO А В 1 ¡END,1. GO TO АВЗ;ab 1 :/»вставка подпрограмм */

184. SUBSTR(S3, 1,1)'-»=' ' THEN DO! J2=INDEX(S3, ' '); IF SUBSTR(S3,J2-l,l)=':' THEN J2=J2-iS C0M,LAB=SUBSTR(S3,1,J2-1)¡END!

185. DO J2= I NDEX(S3, ' ' )TO 72 WHILE(SUBSTR(S3,J2,U = ' ');

186. COM.LABr 'TUNFL ' ;COM.COPs'HL т';CALL WRAIcom.LABz'TOWFL'iCOM,OOP='HLT';CALL wra•

187. COM,L А В = ' F С W F L f;COM.COP=' H L T';CALL WRA » COM.LABz'FOWL'¡COM.COPr'HLT'¡CALL WRA\ £JOM,LABr'T2DIV';COM,COPr'HLT'iCALL WRA!

188. COM.PARS 'SP.???♦ 'I !SI 5CALL WRA;com.cops'jmp';com.par='?obx'; call, wra;

189. DCL LH В IT с1)ЕХТ,/*ПРИЗНОК-яЕВ0й ЧАСТИ*/

190. RFs!Q.REF!FREE ID i END i #R ; l(104):/*<переменная-с-индексаМи>::=«идентификатор-массива»

191. END;TPPrTP;FND; if md = 4 ! md = -4 then do! #pr'd, ' j iunspeo<tpj i i 'в ' j #c= 4 xI ';

192. WJ#C='CALL'!#P='?MFY'}#W;ENDi #c='P0P'UP='D';iSiw; # С = 'CALL ' ; # P = '?adf ' j#W!/*ДЕйСТВИТ.ДДРЕСС ЭЛЕМЕНТА МАССИВАМ/END;bmac(i) =' i;

193. TPL = 3 ; end ; I F hd = 4 THEN dO i TPL = 4 » *C='MVI ' ; tfP = 'c » '! i SUBSTR ( UNSPEC (TP ) .9,8) I I 'B ' Î #W i1. STc ' ;$ END ;1.CLUDE SIRT(SPF) ;exprl:/»выражение*/

194. INCLUDE BIRT(SPE) ! *DCL(#R« #W» #C)#P)CHAR ;

195. ALLOCATE pOPa;POPR='0'Bi * = spr(k1) ; if bs tHl:N do!c='call';#p='?dkp';#w;bmac(2)='i'b;end;free poprJ#r> l(94) : l (93):/*<оз>:; = i я */ if tpl -=3 then do;c= 'call ';ikp='?dkp';#w;bmac(2) = 'ifb; end;1. ELSE DO;

196. Cr'MOV'ii#P='Ai H'lIWi iC='CHA'i#Wi

197. C='MOV';iPe'HiAM#WiEND; L < 92 ):/*<оз>::=+ */ #r ;1(87 >:/*<ТЕРМ>::=<МИОЖИТЕЛЬ>*/allocate dopr;dopr='0'b;#^spr(kd ifree dopr;#r; i<88 ) :/*<терм>:: = <терм><зоу><мноките/1ь>*/

198. ELSE DO; #C= 'CALL ' i #P= '7CNG ' i !вмaci20) ='i 'b;end;1. S PR(к i) ;1. 4(TPL=1 I TPL = 2)THEN PUT SKIP L I ST('HEДОПУС ТИМЫE ТИПЫ(ТЕPM) ' ) ; IF Т PL = 1 & Т PR = 2 THEN D 0 ic='call';#p='?chr ¡преобразование hl и с к real';

199. TPS = 2 * TPL = 2 THEN DO i #Cs 'MOV ' I #P = 'A , С ' ; # W ; END iif tps = 2 then do;#c= 'pop';#p= 'b';;padd='Q'b; end;

200. SPR(к 1) ; IF TPL = 2 THEN DO!

201. TPL = 2 THEN DO; 0C='PUSH';#P='B';#W;END;TPOV=TPL5 #=uxpr (к i i;1. TPOV=2 THEN 00|c= 'pop f; #p= 'b'; diw; end ; #c= 'pop *p= 'd'; #w; free bs; l(98 ) :/*<первичное>!-,=<идентификатор-события»*/ #R;

202. U ( 9 5 ) :/*<ПЕРВиЧНОЕ>г:=<КОНСТАНТА>*/ #=CNS(K1) t

203. TPLri THEN 00! /*ЗАГРУЗКА ЦЕЛОЙ КОНСТАНТЫ */ #C= 'L X I ' !

204. P='H, !SR| I ' ¡КОНСТАНТА INTEGER'!end;

205. P='H, 'i 1UNSPEC{IM) I i 'В ;kohctahta real ' 5 IPW i

206. C='MVI ';#P='C, 'I !SUBSTR(UNSPEC(IRJ ,9.8) I I 'В ¡КОНСТдНТд REAL';w; end;

207. TPL=3 THEN D0i/*nPE0BP030BAHME КОНСТАНТд К ТИП* ВИ*/ fC='MVl '¡#Р='Н, 'HSR Il'H ¡КОНСТАНТА BIT'S1. Ш К ; Е N D ;

208. P = SUBSTR(UNSPEC(TRT(I3) ) ,9,8) ! | 'B'1.' 'I !SUBSTR(SR, 12,1)5 ;end; end ! !1.CLUDE BIRT(SPF)i

209. UXPR!/»ОБОБЩЕННОЕ ВЫРАЖЕНИЕ*/ * INCLUDE В IR Т(S Р Е) i

210. DCL И CHAR(3)CTL EXT, PUO В IT{ 1 )EXT,/«УНИКАЛЬНЫЙ НОМЕР МЕТКИ*/

211. OV THEN DO;#c='PUSH';#P='D';#w;END; # = SPR (K2); TPR = TPL ; IF TPL "¿3 THE;N PUT SKIP LIST

212. ОБОБЩЕННЫЙ ТЕРМгтНЕПРАВИЛЬНЫЙ ТИП ') i 0Т= ' 1 'Ei Ic= 'xchg ';#w;# = spr (к i) ; #c= 'ana '; #p= 'н '; #w ; #c='mov;#p='h)a'uw;1. ov THEN DO;

213. C='POP ' ;*PP'PSW ' J#W ;END ; "IF TPL "=3 THEN PUT SKIP LIST

214. ОБОБЩЕННЫЙ ТЕРМ-НЕПРАВИЛЬНЫЙ ТИП')! TPL = MAX(TP|.,TPR) ; OT='0'B{r ;l ( 7 8 ) :/*<обобыенный"терм>::=<обобиенный-нно»(итель><'/

215. S P R ( К 1 ) ; IF T PL = 1 I TPL = 2 THEN DO I /»ПРАВАЯ ЧАСТЬ Й DE ,ЛЕЁАЯ ЧАСТЬ В HL*/ TPfg=:TPL Jс = 'pUSH ' i #р= 'н'; #w;

216. T P N = 2 THEN DO; # C= ' PU S H ' ; * P s ' В ' ; # W \ END 1 E:ND ; IF TPL=3 THEN DO;

217. С='1ню';#Р='?САТ2';#«; #с=' I\х ';*рв 'н ';;с= 'эню ' ;(КР='?сат2 ';; емо;;обоб1!.енное"лервичное> '

218. Х I N с и и О Е В I Я Т ( Б Р Р ) ;1. В 1-УЮ СТРОКУ */1. СТРОКУ */0Б0БШЕНН0Е-ПЕР8ЙЧН0Е>11<вЫРАЖЕНИЕ>*в первую строку */1. УЮ СТРОКУ*/asst:/»оператор присваивания*/ «include в ir т(spe) { ocu(tplimditpr)fixed в i n(15)ext , lhv 8 it(j)ext i

219. UXPR.VRB)ENTRY(FIXEO BIN(15))RETURNS(PIXED BlNflS)), BMAC(50)ВIT(1)ST AT J С EXT, OPR 8 I T ( I)EXT t TPPC FIXED BIN(15)EXT, lh 8 I T{ 1J EXT,SS BIT(1)EXT,I5 EXT; DCL LHMAS ВI T {1)EXT ,

220. CNG BIT( 1JEXT ,/*ПРЙЗНАК обмена ПРИ СЛОЖНОЙ ЛЕВОЙ ЧАСТИ */ MAS BIT ШЕХТ,/»ПРИЗНАК ЯВЛЯЕТСЯ ЛИ ЛЕВОЙ ЧАСТи массивом */ PROV В IТ С 1 > EXT i/»ПРИЗНАК ПРОВЕРКИ */ xdcl(#r.#c,#p,iw)char| *#R:?'RETURN(0) f|1. Х(сс='сом,ооР';

221. Y.#Pz 'COM.PAR '; 'CALL WRA'5x#TiTLE#="'AssT"' ;x#PP='PPSP »INCLUDE BIRT(SPRD)5include вirt(sprs) ;семантические определения*/ .{166):/*<опер atop-присвайванйе>::=<левая-часть>=обоб«енное-8ыра1кение>#/ong='0'b;prov='0'b;mas='0'bi

222. V = '0'B;#5UXPR(KU ;OPR='1'B;TPPC=TPL;LH=M 'в ;s$ = '0'в;is=a j

223. IF 4 SS I MD>2 THEN DOUC«'PUSH';iP=rH'»#H?

224. TPL = 2 THEN QO;#CS'PU$H';#P='B';#K;END;ss = '1'B; END» */= SPR(K2) ILH= '0 '8; OPRe'0'В;r;

225. П68);/»<ЛЕВАЯ-ЧАCTb>::=*ЛЕВАЯ-ЧАСть>.<ЭЛEHEИТ-ЛЕВОЙ-ЧАОТИ^»/15515 + 1 ; if 4 SS THEN do; #Ca'PUSH'|#P::'H'i#W; if TPPC = 2 THEN D05iHC='PUSH'{#PB'B';#w;ENDt ss = 'i 'b »end 5 #espr<k2i; ( \ Ы) :/*«ЛЕВАЯ-ЧАСТЬ> : «ЭЛЕМЕНТ-ЛЕВОЙ»4$стих«/

226. MAS='0'B;LHV='0'6;I ЗвJ 5 1;PROv= ' 1 '8 |# = SPR(К 1) ¡PROyi'0'Biif mas a nss « tpl^c4 then do;ss='i'b; #c= 'push';ipp = 'h';*W!1. TPL-2 THEN DO ipush'5#pr'8'5hiwjendjend5 if "mas then dojif tpl = 1 i tpl = 2 then do j

227. CNG'»#w; #C='CALL';#P='?CHI#св'хснсЧ#й; end;

228. TPL?2 & TPPCsl THEN DO; BMAC ( 20) = ' 1'B i 'XCHG ' ; $

229. C='CALL '5#P='?CHR '{»HSfCB'CALL'JiPsrfCNC'SiHiiENDi IF MAS « "SS « TPLTHEN DO; IF TPL=2 THEN DO?1. CS'Pop';(»P='B'{#H Jc-'mov';#p= 'b,c' ;#k{end;c='Pop';#p='D';#w;end;

230. TPLO THEN DO} IF TPl« 1 THEN DO» #P='?0PR1 {ПрИС80ЕНиЕ !NTEcER'{Bf14CU3)sM'B!ENDl IF TPU=2 THEN QO;p='?0pr2 j присвоение real ' i bmac ( 14 ) * '1 ' в j end 1 #csfcall'f#w»END|if tpl«3 then do {c='mov';#p='m,o"»#k;end;

231. REP(IP)M THEN I PsREP( I Р) » TPLsTjD(IP).TYPE{if abs(tid{ip),name)a2 then tp|»4{#r{include birt(spf) ;

232. STNLI:/*СПиСОК-ОПЕРАТОРВ»*/

233. К INCLUDE BIRT(SPE) ¡X#TITLEif=''fSTNLl ' # * !zi#pp = 'PPSP ' » '/•DCL (#P,#C,#W ) CHARJXlUCr 'COM.COP'Jp='com,par';;cii|w = 'call wra»; xdcl *r char;;;*r='return<0) s

234. DCl И CHAR(3)EXT VAR CTL i / *УНИКА/1ЬННЫЙ-НОМЕР"МЕТКИ*/ LAB FIXED DECUISTATIC,

235. CCAS FIXED В I N( 15)E XT ,/«СЧЕТЧИК ОПЕРАТОРОВ ДЛА ОПЕРтора выбора*/

236. PCAS В IT( 1)Е X T ./«ПРИЗНОК ОПЕРАТОРА ВЫБОРА*/

237. FCAS FIXED DEC(4), (M2,M3)CMAR(3)V AR EXT CTL »

238. PLAB В I T( 1)EXT,P1 CHAR(8) ,

239. C='LXI';PUT STRING(Pl)EDiT(CCAS)(F(6)j; DO WHILE(SUBSTR(Pi ,l,l)r' ') i PlsSUBSTR(PIi2);END!1. P = ' h j ' 1 I p i;

240. C='CALL ' \#P= '?DKP' i#W ; #CP 'OALL!'}#Pa '?ADF ' ;con,cop='novMPsiA»H';#W{com.cop = 'ral ';call wra;

241. COM.COp='JNC';COM.PAR='?Z'i|M;CALL WRA;

242. Слчхгирг'н.з ;выр, case *3'i#wi1. C='CALL'i<iP='?MFV';#W ;1. C='LXI ' i #P= 'D t ?I 41. C= 'DAD ' i#P= 'D '; #w;c= 'pchl ';mw j pcaSs 'в »в; end ;

243. PLAB THEN DO; ALLOCATE M ; M = GL; ALLOCATE M25M2 = M{ coM.LAB=f?x'iiMicoM.cop='NOP';cALL WRAJFREE M;END;1. SPR (к i) ;1. PLAB then do;com.cop='jmp';com.par= '?Z'| imjcall wrA;end;i»r; l(150) :/*<оператор>:;=<непомеченный оператор»*/spr(Ki) ;#R;

244. К151);/*<оператор>:;=<идентификатор«метки>:<опеРатор>*/

245. S PR(К 2) ;^sSPR(Kli |#R; К152):/*<ИДЕНТИФИКАТОР-МЕТКИ»::=<ИДЕНТИФИКАТОР»*/1. = SPR(K1);COM.LABSTID(IP).NAME;COM.COP='NOPM COM.PaR=' iMETKA-nEPEfl-OnEPATOPOM'iCALL W R д ; # R ;1.i54):L(i53):/»<непомеченный-оператор>!:=<

246. S PR(K 1 ) iIF nPAL THEN 00iC0M.LAB= ' ?A ' J |MiCOM«COP=fNoP ' I COM,PAR=' ; KOHEU-ycAlOBHOro OriEPATOpA ' » CALL W R A 5 END ! #R 51.247) .•/*<yCflOBHWfl-OnEPATQP>: : = <HEnOflHWPI-yC/lOBHU«-OnBPATOP> <A/1bTEPHATKBA>*/

247. S P R ( K 1 ) JCOM,LABr'7A'JIMjCOM.COPs'NOP';

248. COM . PAR= ' ;K0HEU-yc/10BE0r0-0nEPAT0PA';cALL Wf>A;#Ri /¿INCLUDE BIRT(SPF) i

249. USTN:/* ОБШЕАЛГ АРИТМИЧЕСКИЙ ОПЕРАТОР*/ «INCLUDE BIHT(SPE)i «#T1TLE#='"U5TN'";2#PP='PPSP'; DCL(IPR,IPl,RFR)FixED В I N (1 5)E X T tI 6 EXT,

250. SFP FIXED В I N i 1 5 » EXT,/*СЧЕТЧИК ЧИСЛА ПАРАМЕТРОВ*/ UXPR ENTRY(FIXED В I N ( 15) )RETURNS(FIXED BlN(15))i dcl(md,tp,ln.RF.tpl)FIXED BIN( 15)EXT, (expri,stnlbfcl,asst)ENTRY(FixED В I N(15))REturNS <FI XED BIN { 15)) { «include airt (sprd)' ;

251. DCL снн EWTRY(FIXED DEC{5))RETURNS(CHAR(5)VAR)5

252. DCL(#R»iifW.#C.#P)CHAR;*#R='RETURN(0)'{ ^#C='COM.COP';X*:Ps'COM.PAR^i «*W='CALL wRA'; «include birt(sprs);

253. SFPsg ;# = SPR(Ki);#R; ( 174) :/*< ОПЕРАТОР-ВЫЗОВА* ПРОЦЕДУР»; l="GALL"<yKA3ATE/lb'',nP0UEflyPbl>*/ #ps' ¡ОПЕРАТОР ВЫЗОВА ПРОЧЕДУРЧ#И|1. SPR(К 1 ) ! 0R;115.:/*<УКАЗАТЕлЬ-ПР0ЦЕДУРЫ>: :=<иДЕНТИФИКАТОР-ПРОЦЕ'ДУРЫ> «СОВОКУПНОСТЬ-ФАКТИЧЕСКИХ-ПАРАМЕТРОВ»*/

254. END ï ELSE ¡ELSE PUT SKIP LIST ('недопустимые типы при ВОЗВРАТЕ ЗНАЧЕНИЯ')'; L( 175) .'/*<0перат0р-в03врата>.' .'=" RETURN "Л/

255. P ВТ в I Т ( 1 ) ЕХТ ,/-»-ПРИЗНАК ПРАВИЛО <Ш АР> ! : г <П у СТО> */ IABD BIТ( 1)ЕХТ,/^ПРИЗНАК ТОГО ЧТО МЕТКА d ИОПОЛЗОВАНА */ PSM BIT( 1 ) ЕХТ ,/»ПРИЗНАК-CMEtDEHHOro ЦИКЛА*/ PSAVE ВIТ( 1)ЕХТ;

256. OFS>MAXOO THEN MAXDO=OFS| *=STNLI ( К 2 ) H* = SPR<K1) i CDOPCDO-1 J

257. COM,LAB='TG'!!M;#C='NOPf;#W! #R ;l (251 ) :/*<загал0в0к-цйкла|»::в»00"«эленеит» левой части> = <список-цикла>#/

258. ALLOCATE NLHiNLH = OFS!LHMASefIJ'8! LH='l 'B;#SSPR(K2) ¡LHc'0'В; TPD1 = TPL i= spr (к l) ;if "one « 4PRI then do! #c='xra'up5'a'!is<w5

259. Cs'STA'!#Ps!'?DO*'|lCHH(OFSj{OPSPOFS + i;#W|end s ("r ;1. 169) :/*<ЭЛЕМЕНТ1»лЕВ0й-ЧАСТИ>; ^«ПЕРЕМЕННАЯ*»/ vrb(кij ;#R;1.(254) :/*<СПИСОК-ииКЛА>::в<СПИСОК*ЦИКЛА>,<ЭЛЕМЕНТяСПИСКА-иИКЛА>«/

260. ONE= '0 'В! # = SPR(К2) » l (253) ;/*<список-циклa>:: = <ЭЛЕМЕНТ-СПИСКА"ЦИКЛА>*/ PBVo '0 'В{ IF "ONE & "PS A V E THEN QOi 0FS = 0FS + 2;#G*'SHL0'i#P='?DQ+fl i CHM(NLH i i#W5 iCs'LXI '{ #Pa'MirOO*41CHH(NLH*4)|#Wt

261. Ca'SHLD'!#pe'?Do*'nснн(OF$) ;OFS = OFS + 2;#W; PSAVE= 'I'D? END!1. SPR(KI>;

262. TPL в2 THEN DOi*Cz'M0V';#P='bic';«w;EN0;iF "(ONf i ^PRPJTHEN DO; *Co4HLD'!#P4'?D0*'||CHH(NLHj;#W; IF TPL «в TPD1 THEN DOi#C = 'CALL»\ IF TPL=1 THEN #P='?OHR ' iELSE #P='?CHI ' i; END; *C='CALL;

263. TPDUl THEN #p='fOPRl';ELSE #Pr'ToPR2';#W;EVD»*/*R; L(255) /*<элемент-списка-цикла> : ! = <9ЫРА1КЕНиЕ»*/

264. PBYe'0'BiIF ONE THEN DO 5 #Cs'PUSH f i #P«''H Ч «Й i ENQ ; # = EXPRi(Kt) ;PRVB'1'B; IF "ONE THEN DO J/*запись ПРИЗНАКА ВЫРАЩНИЯ*/с к м v i '?#p='a»7fh4#h;

265. C='STA';i*Ps'?DO+'J I СНН ( OF S) }

266. W;0FS = 0FS*1; END 5!F ONE THEN DO i

267. C='STA'5f>P"'?D0*'J | C H H ( 0 F S ) ¡OFSsOFSMi#WjENDi

268. EXPRI (K3) iZP= '1 '8;CALL WRS5Zp= '0 'B!#=EXPR1 (K2) iCaU WRS ;spr<ku1.260): /*<uAr>: :=«»BY''<BWPA)|{EHHE>*/

269. E XPRI C K 1 ) ; C ALL WRSi^R! L ( 259) :/*<UAr>::=<nyCT0>*/

270. ONE then DO! #C='XCHG'; "w; end; #rspr(Kl) ¡<*Ri1.( 25 2 ) / *<3ArA/i0B0K"l4HK/lA> 5 = " D 0 »»' w H I L E»» (<060BUJEHH0E"BblPAKEHHE> ) * / IF "L A BD THEN DO! i»C='N0Pr;c0M.LA8='?DM|M;ilfW!LABD=M,B! END !

271. PUOs'l'BJ^aUXPRtKliJPUOe'fl'Bi #c='POP';fP=fPSw'|)iiw;#c='RAL';i»w; #c='jnc;(!(Ps'?g'! j'n;#«; prw= ' i'b; (sfr;1.(26 1 ):/*<MTEPAllM0HHMfl-3/IEMEHT>::=<BblPA*EHME»"WHILE" (<OB05WEHH0E-Bb!PA)KEHHE>)*/

272. EXPRI fK2) ; IF -ONE THEN DO? #c= 'MyI '; ^p = 'A j7FH ' ; #w ; #c='sta'5#pa'td0+'|ichh(0fs)10FS = 0FS + 1 |*W;END!

273. PBYs'l'B! PRIa'l'B; if ONE THEN 005

274. C='LHLD'i#P='?D0*'J jCHH(OFO) i #W » !*C=fCALL'j)|iP3'?ADF';i»w;0FD = NLH + 2; #C='SHLD';#P3'?D0*'||CHH(0FD){(i(W;

275. C='MCV';^P=fB»C'lii!WiOFD = NLH*2i

276. CALL ' i IF TP0U1 THEN #p«'foppi'; ELSE #P-'TOPPR ' ; #c='iNx'Siip='H';i»w;if ppp £ ( p r v ! pr!)then Do;c='ral'5«w;i»C='JNC'i#P=:'£I+15*;#W;ENDic='Shld':#p='?do*'ijchh(nlh*2>i#w; #c=:'lhld',;#p='?do*'! 'chh(nlH)

277. C='CAll';iF TPDlri THEN fp? f?oprl ' ; else #p='70pr2 ' ; i»w ;c=' jmp ' ¡hps '?d '! i'm i #w;if prp & (prv ! prdthen do!c= 'push ';# p 3' h ';; ^c='lhld';#p='?do*'iighh(nlh*2)

278. Cs'lxi'íif t p d 1 = 1 THEN #p= 'd » 7 ' 5 else #ps * d » 10 ' í # w; #C='LHLD'!i»P='?00*'!!CHH(NLHj!||lK;

279. HCs 'CALL '{IF TPD Is 1 THEN #Рк '?OPPI '¡ELSE #P = ' ?OPPR ' j#W; IF TPD 1 = 2 THEN DOI #C='MOV '; ИФ='A , С ", #W !tfc='pop' = 'в ';#w;#c='mov'í#p='0.á* í#w;end í #c='pdp'í^p='o';#w{#c='caLl't

280. TPD 1 = 1 THEN #Pc '?ADF ' ¡ ELSE #P= ' ?ATR ' Í#W!xcHc 'iew¡

281. TPD 1 = 2 THEN DOI ii'c='HOv'i)ipc(,B»c'i<fw;END; #C='LMLD'i^P4'?D0*'| |CHH(NLH) ! #C='INX'5(»Ps*H'í#í(»

282. TPD 1 = 1 THEN «Pe '?0PR1 ' I ELSE #P= '?0PR2 ' ¡#С= 'СALL'5}

283. Cr'jMp»5#pr'jo'!i M»#W;ENO{END»

284. DHH:PROCiOF) RETURNS<CHAR(5) VARÍ;

285. W4s:pRoc;/*npoueflypa формирования запись По адреосу ído-mofs) */ DCLíTPL.TPDI ctlífixed в i n ( í5)ext 5 dcl ofs fixed dec i 5)ext;dcl nlh ext; dcl zp в i t ( i )ext ;

286. TPL -= TPD 1 THEN DO;#C='CALL ' ;

287. TPL = 1 THEN #P='7CHR'!ELSE #P= ' ?CHJ ' {#WiENi)5

288. TPDt = 2 THEN DOI ЩC= ' XСН2 ' ¡§ К \

289. TPD 1 = 2 THEN DO{#C='MOV';#P='B»C';ilHií;END¡c='Lxi'UP='H,?D0+'!iCHH(0FS);iewJ0FSBqFS + i;c=' call'! '70PR2 ' iend;

290. EL SF D0;#C='SHLD'|)üP='?D0+'| |CHH(0FSI ; 0FS = 0FÍ¡*2 ;END ; #w;if -one <s "zp then do;

291. C='LHLD'i#P='?00*'i ICHHiNLH) IF TPD 1 = 2 THEN #P='70PR2 ' I ELSE #P='0PR14 #CB*ceLL';#M;ZP='I'B5END; */ END WRSi

292. ROS:PROC!/*nPOuEflyPA ФОРМИРОВАНИЕ ЧТЕНИЕ ПО AflPECOy ?DO+(OFs i */ DCL(OFD.TPDl)FIXED BIN(15)EXT CTU DCL NLH FIXED BINi 15)EXT СTL i #Cr'LXl';*P='Hi?DO+'!ICHH(OFD);#W|c='call';iF tpd Is l then #Ps '70PPJ ELSE #P='70PPR';

293. W;#C='LHi.o'5«P=r?DO*rJ !CHH (NLHl i(*W!

294. C='CAl.L'»IF TPDlsi THEN #p=*?OPRt';else «ps '?0pr2 ' ;#w ;1. END RDS;1. INCLUDE bIRT(SPF) ;

295. DECC:/»ОПИСАНИЕ ПРОЦЕДУР*/ XINCLUDE BIRT(SPE) ; DCL IP FIXED В I N t 15) ,

296. MODV » TYPv ! F I XED В I N ( 1 5 ) EXT !/* АТРИБУ ТЫ ВОЗВР АШАЕМОГО ЗНАЧЕНИЯ* DCL VZ В I T( 1 )EXT,IP2 EX Ti

297. СПИСОК -on ИСАНШЯ-ПРОиЕДУРЫх СПИ СОК-ОПЕРАТОРОВХОКОНЧ АНИ E>»/ CPRsCPS*! ; « = SPR(K3);<K = SPR(K4)i# = STNLi<K2)i(i = SPR(Kl);idRi L( 139) :/*<ЗАГАЛОБОК-ПРОЦЕ/:УРЫ>: :=<ИДЕНТИФИКАТОР»

298. PsSPP ( к 1 ) ; IF R E ( I P ) > 1 THEN IP = PEP(IP)5 С О M . L А В = T I D ( I P ) . f- A M E 5 L( 3 ) / * < О К О Ч Ч А И и E > ' : = " E f ■ D " » / /»IF V7 THEN DO; IF MODVrJ THEN do!

299. T'T'PV<3 Д T p ( < 3 & TYPVsTPL. THEN DO!

300. T^L-i THEN do W'P='?CHR ' ;3MAC(8) ='1'в ;ENO;ELSE DO;«P='?CHI '; BIAC { ID = ' 1 'B ; end : #C = 'CALL »; #w ; END ; END i END ;1.( 1 3 6 ) .^«<СПИСПК-ППИСЛНИЙ-ПРОЦЕДУРЫ>;:=<СПИСОК-ОПИСАНИЙ-ПРОЦЕДУРЬ1> .<СПИСАНИЕ-ПР0ЦЕЛУР»»/ t S p R ( К 2 );

301. KM1):/*<BC3BPAWAEM0E-3HAMEHHE>;:=''PETURNS" {<tmn-3HAHEHME>)*/= spr ( k i) ; vz= ' l 'b ; nfr ; U140):/*<BO3BPAli|AEMOE~3HA4EHHE>;.'=<nyCTO»*/1.i 23! ; I. ( 2^ ) : !„ ( 25 ) : l ( 26 ) : L ( 27 ) : / *<Ttin-3HAMEHHE> : : = <nyCTO> 1 "INTEGER" J

302. REAL»' ! >»B 1 T" ! "CHAP»><fl/lHHA> */ IF I> 2 3 THEN HPR (CPR , 16) = I-23 ;1. 1 = 23 THEN *R;

303. I<27 then oo;TYPV = I-23;MODV = I ;#R;END!

304. SPR ( K 1 ) ! 10DV = 2 ;?P;130 ) ;/*<£/iHHA>:: = (<PA3MFPH0cTb>)*/sPR(K 1) ; #R i L ! 3 1 ) :/*<PA3MEPHOCTb>: :=<Bb!PA)«EHME>*/

305. E x P R(Kl);TYPV = FR;#R; L (29 ) :/*<jQ/iuiHA>." :=<nyCTO>*/1. TYPVr 1 ; i?R ;1.CLUDE BIRT(SPF) ;iost :/*оператор-о5мена*>

306. Я INCLUDE BTRT{SPEi;X#TITLE#a'"lOST"'iX#PpB'PPsP'j XDCL(*r,#C,#p,#W)ohari K#R='RCTURN(0) ЧХ#С='СОМ.СОРЧ 2#D='COM.PAR';X#W*'CALL WRA'J DCL(TPL,MD)FIXEO В I N( 15)E X Ti

307. GMO В I Т( 1 )Е XT,>*Ф ДЙЛ НА НГМД */ Ррт в Г Т f 1)EXT,mas bitidext;/* i- буфер обменд-массив */ocl prs в it( 1)ext,/»признак пропуска строки «/м char(3)var ext ctl.si char(10)| ocl lh bit(1)ext,tp fixed bin( 15)EXT•

308. MAS в IT{ 1 )EXT ; ^INCLUDE BIRT(SPRD)J XINCLUDE BIRT(SPRS) | /»СЕМАНТИЧЕСКИЕ ОПРЕДЕЛЕНИЯ*/

309. EXPR I (К 1 ) ;IF TPL>2 I MD = 2 THEN DO!

310. SPR(K2> ;# = SPR(K1) ;#R; 1(276):/*<Н0МЕР"Д0Р0НКИ>:}Г<8ЫРА)КЕНИЕ>*/

311. EXPRI(K1)5IF TPL>2 I MD = 2 THEN 00!

312. PUT SKIP LIST ( 'НЕПРАВИЛЬНЫЙ НОМЕР ДОРОЖКИ 'j ¡ (pr J END ¡1. TPL=2 THEN DO!c='call ';#p ='?сhi ';#w;end; #CB'call';#P='?ANV'{#i(Í;#Cs'CPI'I#Ps'40H'!#ÍIÍ

313. C='JP';)»p='?lOER';#w;#C='MOV'i<fP='CiA';#W5 #c='push';#p='B';«w;#r; L(217):/*<homep-cektopa>:: = <bwpaikehhe>*/= expri Í К 1 ) ; IF T PL > 2 1 M D = ?. THEN DO;

314. HAS= 'Я 'Б UsVRB (К 1 i ; #R ; L ( 105 ):/*< ИДЕНТИФИКАТОР-МАССИВА»; : ^ИДЕНТИФИКАТОР»*/

315. P = SPR ( К 1) ; (PR ; L í 2 1 9) :/*<БУ^ЕР-ОСЕНА»: !=<ИДЕНТИФИКАТОР-МАССИВА»*/ и a s -' i 'B;¡p=spr(kÍ) ;#r;

316. U(210) :/-<ЗАКРЫТИП-0АйЛА>1 : CLOSE"<ЗАПР0С»<ПАРАМЕТРЫ-ЗАКРЬ1ТИЯ>*/if "PRт then do;prt='1'b;

317. GMO THEN #P='3F2BAH '.CLOSE ГМД';

318. ELSE #P='0FB85H ¡CLOSE ПЛ ' ¡#C= 'CALL ' i#W{END ; #R I 1.(220) :/*<0ПЕРдТ0Р»ЗАПИСИ»: : = "WRITE"<ЗАПР0С»''FROM" (<БУФЕР-ОБМЕНА»)«кЛЮЧ»*/ ^ ~ S Р R Í К 2 ) » I F MAS THEN DO i *P = TID(IP),NA ME 5 I 5=IP I IF REP ( IP) > 1 THEN IP = REP( IP) J

319. TPL = TID(IP).TYPE;MD = TID(IP) ,MODE!RF = TI 0 ( IP).ref Íc='lxi';<<p='h,i'iipw;#c='shld';*p='?abeg + 4';ipw; if hd<i then #c= 'lhld';else do;#c= 'lxi '; #p='hi'iitiotip).name;end;#wi1. А В S(M D)=4 THEN DO;

320. C='INX'WÍP='H';IÍ)W;end;#C='SHLD'¡#P='TABEG';#W;

321. TPL = TID(IP).TYPE ;MO=TID(IP) .MODE ;rf = tid(iP) ,ref;tfCz'LXI ';#p='H,1 'l#W;#0s'SHLD'}ipa'?ABEG*4»J#W{

322. M D < 0 THEN *C= 'LHLD'iELSE 00 5 *C = 'LXI 'i'H. ' 11TIq(IP).NAME 5end;#w;if abs(MDj =4 then DO}

323. SPR(k2> !# = spr(k!) ;#Ri (185) :/*<признак-формата*::=* */к ;196. :/*<список~ВЫВОДА»:г«списоквыв од а> , «эле мент-вывод а>#/spr(к2);195 ):/*<СПИСОК-НЫВОДА>::=<элемент-вывода»*/sfr(ki);#r ;197. / *<ЭЛЕМЕНТ-ВЫВ0ДА»1 :=<ВЫРАКЕНИЕ»*/

324. С = ' L X I ' ; fl p = ' H i 'I t TI 0(IP) . n A M E ; # W i IP rep( IP) > 1 then IP = REP ( IP) i

325. TPLrT!D( IP) ,TYPE;MQ=TID(IP).MODE IRP = T10 fIP),REF; IF ABS(MD)=2lABS(MD)=4 THEN TPL = 4 iIF abs(md)=4 THEN DO!с = ч NX '; *р = 'н'; «я; eno;£c='shld';#p=-'7abeg';#w;

326. C='MVI';PUT STRING(S1 )EDIT (RF) ( F ( 3 ) ) 5 00 WHlLE(SUBSTR(Si,l»l> = ' ') isirSUBSTRisl.2) ;E«D;p =' з.'!! s i; * w;

327. C= 'CALL ' ; #P=5 ' ?RWM2 '; #w ;

328. SPR(K1> ;iC='LXI»;#p='H. ' ! ITI 0(IP) .NAME I iW iif REP( ip)> 1 THEN ip = rep( ip) ;tpl=tio(ip).tvpe;md=tid(ip),mooe;rf=tid(IP).ref;

329. ABS(MD)s2!ABS(MD)b4 THEN TPL=d;lF abs(M0)=4 THEN DO! #CsMNX'i#P='H'i#!iien d ; # с =' s hl о'; * p =' ? a beg ' ; * w;с= 'мvi';PUT STRING(S1)EDIT(RF)(F(3));

330. WHILE (SUBSTR<si , 1 ,j)s ' ');

331. SirSUBSTR (S 1 . 2 ) ; end ;p=fB.'iisi;*w>c='call ';#p='?rwm2".#w;

332. C='LHLD';#Ps'?ABEG + 4';ifiW;c = 'mov '; #р = 'з, н ' I #w; #c = 'mov '; #p= 'c»L '; )KW i

333. Cr'LHLD';#P='?ABEG + 2''>#Wi c0M.LAB='?c4iM;#o='PusH';<iP='B'i#w;

334. Сг 'CALL #P= '?RD 1 ¡ВВОД ЧИСЛА В К ОИ n 7 * # W Ic= 'CALL 'i*P = ' ? Cv 1 {ПРЕОБРАЗОВАНИЕ В 2-10 КОД';#Н;

335. C='CALL';0P='?FRI ¡ПРЕОБРАЗОВАНИЕ В КОД МОС-2 ";#W;RETURNi sww(4)¡RETURN;s w w (2) :

336. СЕМАНТИЧЕСКИЕ ПР01ЩУРЫ ОТЛАДОЧНОГО ТРАНСЛЯТОРА РВ- ПЛ/1sp:АСЕМАНТИЧЕСКИЙ ПРОЦЕССОР*/ и include birt (spp1) ;dcl ip e*t;

337. DCL(decSP,DECCP)ENTRY(fixed в i n{ 15))returns(fixed bjn(15)); x#pp='ppsp';x#title#=,"sp'";include birt(s pro ) 5 xinclupe birt(sprs) ; dcl pc as bl tm) ext', plab e i t { 1) ext ;

338. СЕМАНТИЧЕЦКИЕ ОПРЕДЕЛЕНИЯ*/ L ( 1 ) ;/♦<ЯЗУК-РР-МЙКР0>:!=<ПРОГРАММА># */

339. СОВ ОКУ ПН ОСТЬ-ФОР и АЛ ЬННЫХ-ПАРАМЕТРОВх ПРИОРИТЕТ»*/ ip = spr (кз) ;

340. WSsTID(lP).NAMEl!': PROCEDURE OPTIONS(M/ilN)i'il(152):/*<идентификатор-метки»: ¡^идентификатор»*/ip = spr(к 1 ) j # r j l (11 ):/*<описание-обьектов>::=<описание-Данных»*/decsp(к 1 ) : #r5 /¿include birt(spf) ;

341. О Е сп Р:/* с п и С О К ОПИСАНИЙ ПРОЦЕССА */ /¡INCLUDE £» I R т ( S Р Р 1 ) ; DCL 16 ЕХТ,f r FIXED В iм ( 1 5)еx т , 5 1 CHAR ( 6 ) ;

342. J ? = J 2 + 1 i ff = SPR(К2) i L £ 7 £ ) :/ + <СПИСОК-ГРАНИЧНЫХ-ПАР>::<ГРАНИннаяпПЛРА>*/1. SPR(К l);

343. SPR (к i) ; #w I #R; :/*«целое>::=<целоб»,<ииФРА>*/1. SPR ( K2 ) iцелое»: : = «ЦИФРА>*/

344. EXPR(Kti ¡PUT STRINC(Sl)FDlf(FR) (F(3) ) ! WSstfS I ! ' ( *! I S 1 I 1 ') ' ! #R !цзв>:/*<повторитель>::=<пусто>*/ fr-i;#r;1.CLUDE BIRT(SPF)!

345. STNL р:/»Список ОПЕРАТОРОВ */ «INCLUDE D I R Т{S РР 1 ) i Ji f" PP = 'PPSP ' ; « # Т I T L Е # = ' ' ' S T N L Р ' ' ' » «INCLUDE 0 IR T(S PR D ) ! «INCLUDE BIRT(SPRS) i

346. OCL«VCaSjCCAS)FIXED В I N { 1 5 i EXT , QPNO FIXED BlNdSlEXyi OCL PCAS bit(1)EXT.S1 CHAR(20).PLAB В I T ( 1)EXT » S2 CH A R < 8) 5 /* семантические определения */ l( 14 9) :/*<список-операторов»::=«список-опера торов»¿оператор» */

347. PCAS THEN ccasisccas+1 ; # = spr ( К2) i L( 145 )••/*< СП И СОК-ОПЕРАТОРОВ» ;:=<ОПЕРАТОР»*/

348. H = uxprp(K2) ; wss'then #=spr(кi);#r; «include вirt{spfi;

349. UXPRP(K2)i#w;#=spR(Kii;#R; L(260):/*<liJAr>::=«'BY"<BblPA)KEHHE>*/ws = ws i! ' BY ;# = uxprp(Kd ;#w;1.( 2 5 9 ) ;/*<li!Ar>: :<nyCT0>*/ ;1.(261 ):/*<nTEPAUH0HHblii-3/lE ME HT>::=<BbiPA)KEHnE> "WHILE" (<0E05U)EHH0E-BblPA)f!EHHE>)*/

350. WSr'GET L I ST( ' 5 #W j# = S Р R(К 1) ; WSsWS1! ') i ' I # W;# R;190.:/*<элемент„сПИСКА-ВВОДА>:;=<ПЕРЕМЕННАЯ>*/uxprp(кi);;#r s (19 1):/*<элемент„списка-ввода>:;=<идентификатор~масоива>*/1. SPR(к i) ;

351. WS=""!iTlD(IP).NAMEl!",.'l!TID(IP).NAME:1. W i IF R ;1.CLUDE BIRT(SPF) 5

352. ИНИЦИАЛИЗАЦИЯ УКАЗАТЕЛА СТЕКАstr ; их i SP,??? + 121. JMP ? ОБХ 700 : OS 81. ПРОВ.ВЫХОДА ИЗ ЦИКЛА7AFN ; nov А, Н XRA D1. СМА1. МОV Н 1 А ret

353. Установка начальных знач.при обращении к элементам массива 7ARY ; и XI 4,0lhld 7 0 0+6 call 7 a ofshld 7do+2jmp 7d2pad о jnc я+4shld 70ffsinr l shld ? dhl ret70ffsi ds 27 dhl i ds 2

354. ПЕРЕХОД НА АВАРИЙНЫЙ ОСТАНОВ ПРИ переполнении1. JC ? FOFL1. RET1. ПОЛУЧ,ДОП.КОД1. NOP7 DKP • NOV А,И СМ Лм о v н i а м о v а , l СМ а1. М О v L * А I N X Н RET

355. ЗАП.ПО АДРЕССУ В H-L ДВА БАЙТА В о-Е7 оррi: мо v еiм I N X и M О V о , М RET3АП,ПО АДРЕССУ В H-l ДВА БАЙТА В H-Lopri; mov Е,М I NX Н mov d.m I NX И X С Н G ret

356. ЗАПИСЬ из РЕГИСТР0В D-E 2^X БАЙТОВ ПО АДРЕССУ В h-j.70pri; mov М,Е i n у ч М О V 1,0 ret7FOFL : HL Т 7 fd wl i hl t 777 : nopend1. ПРИМЕР,

357. ПОКАЗЫВАЮЩИЙ РЕАЛИЗАЦИЮ ОПЕРАТОРА ВЫБОРА ВХОДНОГО ЯЗЫКАисходная программа на языке рв-микро*/process"casE ;

358. HVARVAJ »81"INTEGER"I А l = 5 Icaseha! в* = а 1*2i В J = А 1 -4; в l = а 1 * 5 i veno"; MEND

359. Вt'lXоПня ПсОГРЛИМА НА ЯЗЫКЕ АССЕМБЛЕРА МП К5В0ИК80*/

360. Н д Ч А Л 0 П Р О Ц Е С С А1. САЗЕ : \'Орначало списк'5 описаний процесса

361. J М Р ? S Т R i ПРОСТАЯ ПЕРЕМЕННАЯ БЕЗ INITа 1 : :$ 2

362. ПРОСТАЯ ПЕРЕМЕННАЯ БВЗ IN IТ31 : OS 2

363. ЧдЧАЛО-СПИСКА-ОПЕРАТОРОВ-ПРОЦЕССАосх : nop1. КОНСТАНТА INTEGER

364. U. X I Н , 5 5 н l(3 а 1 ; ЗАГРУЗКА ПЕРЕМЕННОЙ INTEGERlhld а 1 X С Н G1. КОНСТАНТА integer1.х I Н , 3 call ? )кр call 7adf и о v а , нpal

365. ПЕРЕХОД НА КОНЕЦ ОПЕРАТОРА CASE ЕСЛИ ЗНАЧ . 8ЫРАЬС ASЕ<01. JC 7 221. XCHG

366. ЗАГРУЗКА ЗНАЧЕНИЯ КОЛИЧЕСТВА ОПЕРАТОРОВ В ТЕЛЕ ОПЕРАТОРА CASE

367. X I Н, 3 CALL 7 D КР CALL 7 A D F МО у А , Н rai.

368. ПЕ°Е*ОД НА КОНЕМ ОПЕР.CASE ЕСЛИ ЗН А Ч , ВЫР/i К • > s КОЛИЧ.ОЛЕ?.CASE1. JNC 7 Z 2з ь; р . с a s е * з1.х I Н , 31. CALL 7 МF V

369. ЗАГРУЗКА НАЧАЛЬНОГО АДРЕСА ПЕРЕКЛЮЧАТЕЛЕЙ1. UV Г 0,7121. ОАО О pchli ПОПОЛНЕНИЕ 1-ГО ОПЕРАТОРА В ОПЕРАТОРЕ CASE

370. ЗАГРУЗКА ПЕРЕМЕННОЙ INTEGER7X3 : LHLD А 1 XCHGконстанта integerl x i 4,2 call 7a0f s h l d 3 1 j m p 7 z 2

371. ВЫПОЛНЕНИЕ 2-ГО ОПЕРАТОРА В ОПЕРАТОРЕ CASE

372. ЗАГРУЗКА ПЕРЕМЕННОЙ INTEGER7X4 : LHLD А 1 XCHGi КОНСТАНТА INTEGER

373. X I H , A CALL 7DKP CALL 7 A )F S И L О В 1 JHP 722- 212

374. ИНИЦИАЛИЗАЦИЯ УКАЗ ATE ЛА СТЕКА IX! SP, 7 7 7 +6 О и Р 7 О Б X

375. ПРЕОБРАЗОВАНИЕ СОдЕР*,ИМОгО РЕГИСТРОВ Н-Ц ИСК ЦЕЛОМУ ТИПУ1. А,С 15 С, А1. НА АВАРИЙНЫЙ 7FOFL А,И1. А .Иfl G V SB! МОу R2 RAI ПЕРЕХОД ONO MOV RAI. MOV RAR MOV MOV RAR MOV I NR R Z

376. I В,2 CALL ? R W И 2 LHLD ABEG+4i подсчет количества байтов массива целого типаcad h Î ЧТЕНИЕ БАЙТОВ МАССИВАcall ? к wm 5 j о п е р д т о р о б m е h аi вычисление количества элементов массива1.X I H , 1

377. SHLD ? A BEG+ 4 U x I H , A 2 SHLD ? ABEG ; загрузка количества измерении массива

378. I В , 2 CALL 7RWM2 LHLD ABEC+4

379. ПОДСЧЕТ КОЛИЧЕСТВА БАЙТОВ МАССИВА BEUЕСТЗЕННОГО ТИПА

380. ЗАПИСЬ БАЙТОВ МАССИВА С ПОМОЩЬЮ СИСТЕМНОЙ ПОДПРОГРАММЫ МОС-2 7 Rwиз: X с ЧG1.LC ?ABEG+21. MOV С,* ! ПуВОД ИЗ С

381. CALL 3F80CH ; ВЫЧИСЛЕНИЕ АДРЕС СЛЕДУЮЩЕГО БАЙТА1.NX Н

382. КОРРЕКЦИЯ СЧЕТЧИКА КОЛИЧЕСТВА БАЙТОВ1. OCX О1. M О v А , D1. OR А Е1. J N 7. й-71. RET1. А В Е G OS 61. ЧТЕНИЕ БАЙТОВ МАССИВА7RWM5 >iCHG1.LD ?ABEG+2t i звод в Л1. CALL $ F 8 6 М1. MOV М , А

383. ВЫЧИСЛЕНИЕ АДРЕС СЛЕДУЮЩЕГО БАЙТА1. J NX И1. 1 КОРРЕКЦИЯ СЧЕТЧИКА БАЙТОВ1. DC* D1. М с V А , D1. OR А Е1. J N1 4-71. RET1. УМНОЙ, с Ф И К , 3 А П .1. MF V NOP1. MOV А , D1. RAt,1. JNC ? MFA 11. CALL ? О К Р1. X С H G1. CALL ? DKP1. X С H G

384. МНОКИТЕЛЬ ПРИВЕДЕН К HE ОТРИЦАТЕЛЬНОМУ ВИДУ7 MF A I О A D Н1. М О V В , Н1. М О V С I L

385. УСТ.НАЧ .ЗНАЧЕНИЯ СУММЫ ЧАСТНЫХ ПРОИЗВЕДЕНИЙ1.I н , он7 AF Вк о к1 ?mfz1. ADF7 ОКР

386. УСТ.НАЧ.ЗНАЧЕНИЯ СЧЕТЧИКА li V I ST д10 v RAL М о Умоу RALмоу В , А ПРОИЗВОДИТЬ СЛОЖЕНИЕ CC 7ADF

387. D Л 7 М F 7. КОРРЕКЦИЯ СЧЕТЧИКА1. ЗНАЧЕНИЯ А , 1 5 ?KFZ1. А , С1. С , А А ,В1. ЕСЛИ БИТ ПЕРЕНОСА=11. OCR А STA ? М F Z ? KON А1. ВЛЕВО СУММЫн7 MF А 21. ЧАСТНЫХ ПРОИЗВЕДЕНИЙ7 М F А 2Н

388. НА А В АР ИЙИ ЫЙ 7 F О )■! L 7 AFB1. ОСТАНОВ ПРИ ПЕРЕПОЛНЕНИИ1. ТОЧКОЙ1. ОРР I7 F О W L 7FOFL 7771. JZ1. X R Асдвиг

389. DAD JN С СМ А X R А R A L ПЕРЕХОД J С J4P RET DSсложение MOV X R А DAD JNC CM А XRA1. ПЕРЕХОД JC PET п о л у ч,

390. М О V СМ А М О V М О V СМ д. MOV I N X RET

391. ЗАП.ПО АДРЕССУ 3 H-L ДВА БАЙТА 8 D-E М О V I NX М О V RET Н L Т HLT NOP Е N D11. С Ф и к А, И1. D О1. И + 41. НА АВАРИЙНЫЙ 7FOFL1. ОСТАНОВ ПРИ ПЕРЕПОЛНЕНИИд о п. к о д1. А , Н1. И i А ,1.>1. D , М1. ПРИМЕР

392. ВХОДНОЙ И ВЫХОДНОЙ ПРОГРАММ ОТЛАДОЧНОГО ТРАНСЛЯТОРА РВ-ПЛ/1

393. PUT SKIP L I 5 T ( ' B fci P A W E H vl E = ' i S >', E fi D 5