Система для трансляции с проблемноориентированного языка
Иллюстрации
Показать всеРеферат
Союз Советских
СОциьлистииесиих ,."{ Республик
И АВТОРСКОМУ СВИД6ТИЛЬСХВУ (б!) Дополнительное к авт. свид-ву(5!) М. Кл
Я 06 Г 15/20 (22) Заявлеио29.1 1.76 (21) 2424859/18-24 с присоединением заявки № (23) ПриоритетГосударственный номнтвт
СССР пв делам изобретений н открытий (53) УДК 681,822 (088.8 ) Опубликовано 15.07 79. Бюллетень № 26
Дата опубликования описания 18.07.79 (72) Автор изобретения
В. М. Сентюрин
Институт электронных управляющих машин (71) Заявитель (54) СИСТЕМА ДЛЯ ТРАНСЛЯЦИИ С ПРОБЛЕМНООРИЕНТИРОВАННОГО ЯЗЫКА
1 .. 2
Изобретение относится к вычислитель- соединен с выходом :устройства управленой технике, ния (2).
Известна система,в состав которой, Однако такая система имеет низкую входит стековая память с двумя верхни скорость трансляции программ, написанных ми ячейками, выполненными на регистрах, на йроблемно-ориентированных языках, так блок управления, арифметический блок, 5 как основные элементы ее и связи между трит геры занятости, счетчик операндов, ними выполнены программно в виде инстблок чтения программ jl) .. рукции, Но применение программ для транс
Использование в этой системе стеко- ляции, как известно ухудшает один из оовой памяти уменьшает быстродействие вы- новных показателей ЭФМ - скорость транополняемых программ в 1,5-2 раза, так т0 ляций. как запись и чтение информации в ячейки Таким образом, в архитектуре и кон стека осуществляется последовательно, а струкции современных ЭВМ имеются элене прямым {координатным) способом. менты, разрешающие противоречие - либо
Наиболее близкой по технической суш- повышенная скорость трансляции, либо по ности к данному изобретению является си- т .вышенная скорость счета в сторону стема, содержашая вычислительное устрой- улучшения только одной характеристики. ство, соединенное двухсторонними связами . Поэтому задача состоит в том, чтобы с оперативным запоминающим устройством ввести в архитектуру ЭВМ такие элемени устройством управления, которое через ты, которые позволили бы устранить или устройство управления каналами соединено двусторонне уменьшить указанное протидвухсторонними связами, с внешним запо- воречие. минаюшим устройством, управляющий вход Белью изобретения является повышеоперативйого запоминающего устройства ние быстродействия системы.
» щ@ мйм»» ф »м»»»се@. »»,-..;=- ф»йайааай»»-» -.: м »»»»» .. ---.. ».„.ж»» - .-»-.. °, »
674028
Поставленная цель достигается тем, что в предлагаемую систему введены модификаторы адреса символов исходного текста, адреса макрокоманд, адреса полуМ объектных команд, адреса объектных команд, адреса меток, символьный анализатор, операторный анализатор, блоки перекодировки чисел и обработки ошибок, уп-р6вляюшие входы кбторь х подключены к выходу устройства управления,""выход вы- 10 числительного устройства соединен с пер . выми. входами символьного и операторного анализаторов и блока перекодировки чисел, первый выход и второй вход символьного .: анализатора соединены соответственно со 15 Ь т»офы»м" вх»одом»- и -пе» рвъ1м " выхбдо»м "оперативного анализатора-, второй выход котс» рого подключен к первому входу модифика» тора адреса макрокоманд, третий выход соединен с первыми входами модифйкато» 20 ров адреса полуобъектных команд и адреса объектных команд, четвертый выход подключен к первому входу модифика« тора адреса меток, первые выходы блока перекодировки чисел, модификаторов адре 5 са меток, адреса объектных команд, ад реса полуобъектных команд, "ад»реса сиМволов исходного текста, второй выход сим вольного анализатора и пятый выход" опера» торного анализатора соединены с первым входом блока обработки ошибок, второй выход блока перекодировки чисел, первые выходы бйока обработки ошибок и модификатора адреса макрокоманд, шестой выход, операторного анализатора и третий выход сймвольного анализатора соединены со вхо дом устройства управления, седьмой выход операторного аналйаатора подключен ко входу модификатора адреса символов исходного текста, вторые входы модифи
40 катора адреса макрокоманд, модификатора адреса меток и блока обработки ошибок соединены с выходом оперативного запо минаюшего устройства, входы которого соединены с соответствующими выходами введенных модификаторов, анализаторов, блока перекодировки чисел и блока обработки ошибок, кроме того, символьный анализами ор в системе»содержит два счет чика, выход первого из которых соединен со входом блока И, первый управляющий вход которого подключен к управляющему входу символьного анализатора, выход вто рого счетчика соединен со входом дешиф
55 ратора, выходы которого подключены соот» ветственно к первому, второму и третьему выходам символьного аналйзатора, первый вход которого соединен со входами счет4 чиков, второй вход - co вторым управляюшим входом блока И, выход которого соединен с выходом символьного анализатора, операторный анализатор в системе содер жит переключатель, стековый регистр, первый выход которого подключены ко входу дешифратора, первый и второй выходы ко» торого соединены соответственно с первым входом переключателя и первым входом стекового регистра, второй вход переключателя соединен с управляюшим входом операторного анализатора, третий вход переключателя и второй вход стекового регистра соединены с первым входом операторного анализатора, второй вход которого соединен с четвертым входом переключателя, выходы которого с первого по четвертый подключены соответственно к выходам с первого по четвертый операторного анализатора, пятый, шестой и седьмой выходы которого соединены соответственно с третьим выходом дешифратора, вторым выходом стекового регистра и пятым выходом переключателя, четвертый выход дешифратора подключен ко второму выходу операторного анализатора, третий вход и третий выход стекового регистра соединены соответственно со входом и выходом операторного анализатора.
На фиг. 1 показана блок-схема предлагаемой системы, на фиг. 2 « логическая схема системы, на фиг. 3 - логическая схема модификатора agpeca; на фиг. 4логическая схема блока перекодировки чисел; на фиг. G - логическая схема блока обработки ошибок," на фиг. 6 логическая схема стекового регистра на фиг. 7логическая схема стека, на фиг. 8, 9схемы реализации символьного анализатора на фиг. 10 - операторного анализатора.
Система включает в себя оперативное эапоминаюшее устройство 1, вычислитель ное устройство 2, устройство управления
3, устройство управления каналами 4, внеш; нее запоминаюшее устройство 5, модификатор адреса символов исходного текста
6, символьный анализатор 7, операторный анализатор 8, модификатор адреса макрокоманд 9, модификатор адреса полуобъектных команд 10, модификатор адреса объектных команд 11, модификатор адреса ме ток 12, блок перекодировки чисел 13, блок обработки ошибок 1 4.
Более детально система представлена на фиг. 2, где дешифратор 15, блок чте ния 16, блок записи 17 являются элементами оперативного запоминаюшего устройI
674028
5 сгва (ОЗУ) 1; регистры операндов 18, 19 соединены с вычислительным устройством 2 блоками 20, 22 И, блоком 21
И - с ОЗУ 1, блоком 23 И вЂ” с операторным анализатором 8; модификатор симво- лов исходного текста 6 состоит иэ трех параллельно включенных счетчиков 24, 25, 26, причем выход счетчика 24 через блок 27 И соединен с дешифратором ОЗУ
15, выход счетчика 25 соединен с дешиф-1о ратором 28, нулевой выход которого сое динен с третьим разрядом счетчиков 24, 26, а выход счетчика 26 через дешифра« тор 29 соединен с блоком, обработки ошибок 14. 15
Символьный анализатор 7 выполнен (см. фиг. 2 и фиг. 8) из двух счетчиков
30, 31, причем выход счетчика 30 соеди» нен через блок 32 И с дешифратором ОЗУ
15, выходы счетчика 31 соединены через 2о дешифратор 33 с переключателем 34 анализатора 8 и с блоком обработки ошибок 14.
Операторный анализатор 8 выполнен с использованием переключателя 34, стеко вого регистра 35, дешифратора 36, сте ка 37, счетчика 38, дешифратора счетчика 39, причем выходы стекового регист ра 35 соединены с дешифратором 36, вы- ЗО ходы дешифратора 36 соединены с пере ключателем 34, со стековым регистром
35, счетчиком 38, через блок 40 И, ре гистр 35 - со стеком 37; стек 37 соединен через блоки И 41, 42 с регистрами
18, 19, выходы стека 37 соединены через блоки И 43, 44 с регистрами18, 16 а через блок И со стековым регистром
35, выход дешифратора 39 соединен с блоком обработки ошибки 14, Позицией
45 обозначен. стековый регистр. Дешифратор 36 соединен через блок 46 И с модификатором адреса макрокоманд 9, стеко вый регистр 35 соединен через блок 47
ИсОЗУ1, 45
Второй вариант стека операторного анализатора 8 (см. фиг. 2) может быть выполнен с использованием двух реверсивных параллельно включенных счетчиков
48, 49, причем выходы первого счетчика
48 соединены через блок 50 И с дешифратором 15, выходы дешифратора 36 сое динены с переключателем реверса счетчи ков 48, 49, выходы стекового регистра
35 соединены через блок 47 И с ОЗУ 1, выходы ОЗУ 1 соединены со стековым регистром 35. Выход дешифратора 51 соединен с блоком 14.
Модификатор адреса макрокоманд 9 выполнен в виде двух параллельно включенных счетчиков 52, 53, причем входы счет чика 52 соединены с регистром 54 через блок 55 И, входы младших разрядов счет- чика 52 соединены через блок линий задержки 56 с блоком 46 И, выходы счез чика 52 соединены через блок 57 И с дешифратором ОЗУ 15, входы счетчика
53 соединены через блок 58 И с выхода ми ОЗУ 1, выходы счетчика 53 соединены через дешифратор 59 с устройством управления 3, клеммы 60, 61 являются входами блока 58 И и дешифратора 59 соответственно, Модификатор адреса полуобъектных команд 10 выполнен из чезътрех параллельно включенных счетчиков 62, 63, 64, 65, причем выходы счетчика 62 соединены с дешифратором ОЗУ 15 через блок 66 И по первой ветви и через блок 67 И, ре1 истР 68, блок 69 И - p второй ветви, счетчики 63," 64 через дешифраторы 70, 71 соединены с блоком обработки ошибок 14, выход счетчика 65 соединен через блок 72 И с ОЗУ 1, выходы регист» ра 73 подсоединены параллельно выходам счетчика 63 ко входам дешифратора 70.
Модификатор адреса объектных команд
11 выполнен из двух параллельно включенных счетчиков 74, 75, причем выходы первого счетчика 74 соединены через блок
И 76, с дешифратором ОЗУ 15, выход счетчика 75 соединен через дешифратор
77 с блоком обработки ошибок 14, входы счетчиков 74, 75 соединены через блок
78 И параллельно входам счетчиков 62, 63, 64, 65.
Модификатор адреса меток 12 выполнен из трех параллельно включенных счетчиков
79, 80, 81, причем выходы счетчика 79 . соединены с дешифратором ОЗУ 15 через блок 82 И по первой ветви, а через блок
83 И, регистр 84, блок 85 И - по второй ветви, выходы счетчйков 80, 81 соединены через дешифраторы 86, 87 с блоком обработки ошибок 14. Позицией 88 обозначен блок И. Входы счетчика 81 соединены через блок 89 И с выходами ОЗУ
1, регистр 84 через блок 88 И соединен со счетчиком 79.
Второй вариант символьного анализатора (см. фиг. 2 и фиг. 9) выполнен из ре» гистра 18, блоков 90, 91 И и дешифратора 92, и отличие его or первого варианта состоит в том, что выходы дешифратора объединены в алфавитные группы букв, 674028 цифр, операторов, разделителей по кодам символов, а не по номеру в алфавите, как в первом варианте.
Более детально схема модификатора адреса 10 представлена на фиг. 3. Он вы- s полнен из триггера 93, регистров 94, 95, 96, соединенных через блоки 97, 98, 99 И со счетчиком 64, выходы триггера
93 соединены с шинами блоков И 100 и
101, блок И 102 включей на входе счет» 10 чиков 62, 63; выход триггера 103 сое» динен с шиной блока И 102, блок И 104 включен на входе регистра 73, выходы которого соединены параллельно вЫходам счетчика 63 на входах дешифратора 70.
Триггер 93 и блоки И 100, 101 представляют собой переключатель счетных имцу льсов.
Применение модификаторов адреса; со» стоящих из нескольких параллельно вклю ченных счетчиков, позволяет осушествлять несколько процессов одновременно, что приводит к увеличению скорости трансля ции.
Схема блока перекодировки чисел 13 представлена на фиг. 4, Этот блок выпол нен из упаковываюшего регистра 105, узла перекодировки упакованных десятичных чисел и двоичных- чисел в двойные
106, узла перекодировки двоичных чисел в двоичные числа с плавающей запятой
107, переключателя режимов 108, счетчика 10.9 и дешифратора 110 упаковываюшего регистра 105, счетчика 111 и де- . шифратора 112, причем"блок 105, 106, . З5
107 соединены йоследовательно через блоки И 113, 114, 115, на входах счетчи ков 109 и ill включены блоки И 116,.
li7, выходы блоков 105; 106, 107 соединены через блоки И 118, 119, и блок 4О
ИЛИ 120 с выходным блоком И 121;
Летальная схема блока обработкй ошибок представлена на фиг. 5. Этот блок выполнен в виде устройства, содержащего четыре параллельно включенных счетчика 45
122, 123, 124, 125, при этом на выхо де счетчиков 123, 125 включены дешиф раторы 126, 127. На выходе счетчика
122 включены блоки И128, 129, регистр:
130 адреса ключа зашиты и блок И 131; блок И 132 включен на входе счетчика
125; позицией 133 обозначен управляю-" . щий вход блока 14. Устройство перекоди» рования двоичных чисел в десятичные 134 соединено со входом регистра распаковки
135, блоки И 136, 137 включены на входе блока 134 и выходе блока 137, блок И 138 включен между регистром
139 и счетчиком 140, блоки И 141, 142, 143 включены на входе регистра 139, на входе и выходе счетчика 140 регистр 144 размера строки исходного текста включен ко входам блока И 132, блок И 145, блок задержки 146 включены последовательно на входе счетчика 147 адреса области названий ошйбок, регистр 148 адреса начала области названий ошибок включен через блок И 149 ко входам счетчика 147; позицией 150 обозначен переключатель.
Блоки И 151, 152 включены на входе регистра 148 и счетчика 147, дешифра» тор 153 включен ко входам блока И 145.
Стековый регистр (см. фиг. 6) выполнен из многобайтного основного регистра
153, блока управления импульсами сдвига 154, дешифратора 36, однобайтного блока И 155, многобайтного блока И 156, причем выходы старшего байта регистра
153 соединены через однобайтный блок
И 155 и многобайтный блок И 156 с младшими байтами регистра 153, выходы регистра 153 соединены с дешифратором
36, выходы дешифратора 36 соединены с первыми входами схем И, включенных на входе байтных шин блока 156, а выходы блока управления импульсами сдви» га 154 соединены со вторыми входами схем И, включенных на входе байтных шин блока 156, Схемы И, включенные на входе байтных шин блока И 156, на чертеже не пеказаны> считается, что они являются конструктивной частью блока И 156, .
Стек (см.. фиг. 7) выполнен из гене ратора импульсов 157, переключателя
158, счетчика 159, дешифратора 160, регистра 161, блока И 162, Н-1 блоков
И 163, 164, причем выход генератора
159 соединен через переключатель 158 со входом счетчика 159, один выход дешифратора соединен с переключателем
158, а остальные Н-1 выходов дешифра» тора 160 соединены с шинами блоков И
162, 164 в порядке возрастания их но» меров, выходы блоков И 163, 164 соединены со входами элементов памяти, а выходы Н-1 элементов памяти, начиная с первого, соединены со входами Н-1 блоков И 163, 164, позицией 165 обозначен блок И, выходы счетчика 159 через блоки И 166, 167 и регистр 161 включены к входам счетчика 159.
Йля простоты иэображения стек на фиг. 7, выполнен иэ четырех элементов памяти, но он может быть увеличен до заданного объема, при этом принципиаль «
674028
9 10 . ных изменений конструкция стека не цре в результат трансляции заносятся объектерпевает. тные команды, реализующие загрузку и
Нумерация элементов "на фиг. 8, 9, 10 выгрузку результатов вычислений в пасоответствует нумерации на фиг. 2.. мять ОЗУ йо стековому способу.
Описываемый транслятор предназначен 5 Предлагаемый способ является усовер для трансляции программ. с проблемно- шенствованием- известного способа трансориентированного языка АМАС-1 и с не ляции Мильнеса и ПОЛИЗа, основанного существенными дополнениями ой может на прямом просмотре формулы исходного быть использован для трансляции алгеб текста программы, вычислений промежураических выражений на фортран 1У и 10 точных результатов, загрузки формулы в стек в инверсном представлении ее с по Усовершенствование языка АМАС»1, следующей выгрузкой формулы из стекла состоит в том, что признак типа опера- . и вычислением результата. По этому меции, записанный в первом действии алгеб тоду в текст загружается вся формула раического выражения, автоматически pao. tS вместе с операциями.
npocrpaasercs на все последуюшие дейст» Последнее обстоятельство не позволявия этого выражения.. ет осуществлять анализ одновременно всех
Укаэанное правило практически не ус» . ячеек стека или отдельных его частей, так ложняет трансляции, но упрощает програм как стек в этом случае может иметь беомирование. конечное количество состояний.
Например, алгебраическое выражение В описанном выше методе для анализа
А =С+ К-N для вещественных чисел точ- формул используются два стека. Причем, но так же изобраэится на языке Фортран» стек уровня в виду койечного количества
1У АМАС и МАС-1. Лля и АМАС- . лля целых чисел состояний (не больше четырех операций) это выражение на Фортран-1У останется 5 может анализироваться с помощью аппабез изменения, на АМАС и АМАС-1 оно ратного устройства - дешифратора одно примет соответствующий вид. временно по всем ячейкам что увелич-!
i e у и и у 6 И
А = B С + В К - В М"и А = В С+ вает скорость трансляции.
+К-М. Кроме того, загрузка в стеки только
Суть способа трансляции алгебраичес»- З0 операции увеличивает скорость загрузки ких выражений, реализуемого описываемой и выгрузки в стек и увеличивает в целом системой, состоит в следующем: скорость трансляции, а загрузка в стек в операторы программы на исходном тек- процессе вычислений только промежуточсге заменяются на макрорасшйрения мак ных результатов не уменьшает скорость рокоманд в объектных кодах; вычислений. формула делится на уровни, При этом, под уровнем формулы принитрансляция алгебраических формул осу- . мается часть алгебраического выражения, ществляетм поэтапно - от уровня к уровню. заключенная между открывающей и закрыколичество этанов равно количеству - вающей скобками одной степени вложенуровней, 40 ности. Под степенью вложенности понимакаждый уровень делится на два подуров«ется число, указывающее номер открываюня: первый подуровень состоит из опера щей скобки и последовательности открываций сложить, вычесть, второй подуровень юших скобок в алгебраическом выражении, состоит иэ операций умножить, поделить, при условии равенства открывающих и затрансляция осуществляется с помощью, кряваюших скобок. При нулевой стегени
45 двух стеков стека уровня и стека невы- вложенности скобки отсутствуют. полнеиных операций; Трансляция очередного уровня может максимальное количество уровней, до» прерываться появлением старшего по степускаемых в формуле, определяется объе- пени вложенности уровня. При этом резульмом стека невыполненных операций и мо». таты трансляции очередного, то есть пре«
50 жет, например, равняться 32; . рванного и незакрытого уровня запоминав стек уровня, выполненный в виде сте- ются в стеке. По завершении трансляции кового регистра, загружается не более че- . высшего уровня осуществляется переход тырех операций: первая, последняя опера на трансляцию прерванного низшего уровция первого подуровня, последняя операция as u r.ä., пока не закончится трансляция
55 второго подуровня и очередная, в стек всего выражения. уровня эагружаетса также признак типа Макрорасширения в объектных кодах первой операции; делятся HB gBS типа, 674628
Микрорасширения первого типа имеют все данные для их выполнения и состоят из объектных команд. Макрорасширения второго типа представляют собой полуобъектные команды без адресной части.
Трансляция осуществляется в две фазы.
На первой фазе исходный текст заменяется макрорасширениями, при этом непосредственно после записи микрорасширений второго типа заносит вторая адресная 10 часть этих команд из программы на про блемно-ориентированном языке в виде символьного адреса или литера. Результа том первой фазы является полуобъектная программа. !
На второй фазе символьные адреса и литералы заменяются их Относительными адресами в объектных кодах и на этом " трансляция кончается. Результатом транс- ляции является перемещаемый программный 20 модуль в объектных кодах.
Система работает следующим образом выполняя соответствующие режимы, . Режим (ЗТ) загрузки данных. В этом режиме массив макрокоманд заносится с. внешнего запоминающего устройства 5 в
ОЗУ 1 и адрес начала этого массива заносится в модификатор адреса макроко манд 9.
Режим (ЗП) загрузки исходного текста программы и параметров транслятора.
В этом режиме исходный текст программы на проблемно-ориентированном языке заносится в ОЗУ 1 и адрес начала и раз: мер этого текста, а также размер строк З5. этого текста заносится в модификатор адреса символов исходного текста 6. Кроме гого, в модификаторы адреса 10, 11, 12, заносятся соответственно адреса и размеры областей полуобъектной и объектной программы, номер регистра и ад рес и размер области таблицы меток. В блок обработки ошибок 14 также заносят- ся адрес и размер области таблицы названий ошибок и таблицы ошибок. Режим ЗП может выйолняться многократно поСле одCI нократного выполнения режима ЗТ.
Режимы ЗТ и ЗП выполняются йод упением операционной систе! ЭВМ. . "
Размеры зайисей объектных, полуобъект
rrrrx макрорасширений, а также меток, литералов и констант- мносятся в "ключ, расположенный в нулевом байте укаэанных записей.
Старший восьмой разряд ключа, равный 1", является признаком макрорасширения первого типа, а равный 0 - является признаком макрорасширения второго типа.
Седьмой разряд ключа, равный "l", является признаком литерала, а равный "0"является признаком символьного адреса в макрорасширении второго типа.
Из этого следует, что максимальная; длина макрорасширений первого типа может достигать 127 байт, а литераловдо 63 байт.
Ключи макрорасширений составляются и записываются в их записи перед загрузкой таблицы макрорасширений в ОЗУ
1. Остальные ключи формируются транслятором.
Режим работы фазы. 1 состоит в выполнении следующих операций..
Первая операция. Анализ символов. Эта операция выполняется символьным анали затором. Блоки 6 и 7 устанавливаются в исходное состояние. Это значит. в счетчике 24 находится адрес очередного символа исходного текста, в счетчике 25 - номер этого символа в строке текста, в счетчике 26 - размер неоттранслированной части "текста, В счетчик 30 заносится адрес алфавита исходного текста, записанный из per.acrpa 94 через блок И
97, в счетчик 31 - размер алфавита в символах, в регистр 139 содержимое счетчика 24, Очередной символ считывается по адресу в счетчике 24 и заносится в регистр
18 и в стековый регистр 35 через блок
И 91. Далее, первый (или очередной ) символ алфавита считывается по адресу в счетчике 30 в регистр 19. Qaaee, содержимое регистров 18 и 19 через блоки И
20, 22 заносится в вычислительйое ycr ройство 2, где осуществляется их сравнение. Если при этом символ оказался оператором (или частью оператора), то управление передается на выполнение второй операции, если символ оказался признаком символьно о адреса, то управление передается на выполнение третьей операции, если символ оказался литералом, то управление передается на выполнение четвертой операции; если .символ оказался признаком матки, то управление йередается на выполнение пятой операции.
После каждой операции сравнения к счетчику 30 прибавляется + 1, а из содержимого счетчика 31 вычитается + 1.
При появлении нуля в счетчике 31 дешифратор 33 подает сигнал об ошибке (появ» ления неалфавитного символа в тексте) в блок 14.
674028
13 14
По окончании обработки ошибки к со- . Далее, ключ макрорасширения считывадержимому счетчиков 24, 25 прибавляет». ется из ОЗУ 1 в счетчик 53 через блок ся + 1, а из содержимого счетчика 26 И 58. Далее осушествляется побайтное вычитается + 1. Если в счетчике 25 по-, считывание макрорасширения под счетчи явилось число 72 (сигнал окончания тек- ком 52 и запись макрорасширения под стовой части строки), то с выхода дешиф- счетчиком 62. При этом к счетчикам 52, ратора 28 поступает сигнал на четвертые 62, 65 прибавляется + 1, а из счетчиков входы счетчиков 24, 26, что эквивалент» 53, 63 вычитается + 1. но прибавлению числа 8 к счетчикам 24, При появлении в младших семи разря26, Это необходимо для того, чтобы íî- rî дах счетчика 53 нуля, дешифратор 59 вымер перфокарты, записанный в 73-80 ко- дает сигнал об окончании записи макрораолонку перфокарты, не анализировался как ширения, при этом содержимое счетчика текст программы. Далее счетчик 25 ус- 65 заносится в ОЗУ 1 по адресу в ретанавливается в.нуль и осушествляется гистре 68, то есть, записывается ключ с переход в начало первой операции на уо- 5 нулем в восьмом разряде, что является тановление в исходное состояние счетчи-, признаком того; что эта запись будет пе- ков 30, 31 и регистра адреса начала стро - ;реноситься в поле объектной программы ки 139 блока 14. без изменения.
Появление нуля в счетчике 26 означа- После этого содержимое счетчика 62 ет конец исходного текста, и соответству- О через блок И 67 заносится в регистр 68, юший сигнал с дешифратора 29 подается. к счетчику 62 прибавляется + 1, а из в устройство управления 3. " счетчика 63 вычитается + 1, При втором варианте анализа символов . Параллельно побайтному считыванию код сиМвола йз регистра 18 через блок; макрорасширения к содержимому счетчика
Й 90 постутщет в дешифратор 92, где 5" 74 размера объектной программы в модиосушествляется анализ сймволов за один — фикаторе11 прибавляется число,равноеразтакт. Второй вариант превосходит первый меру макрорасширения. Сложение этого чиспо быстродействию, но уступает первому iri осуьцествляется путем прибавления+1чепо.простоте йзготовлейия. :"рез схему И 78 к счетчику 74 при чтеВторая операция, Анализ операторов, ЗО нии или записывании каждого байта макАнациз состояния стекового регистра 35 рорасширения. осушествляется дешифратором 36, кото- В случае, если макрорасширение предрый йодает на схемы И, включенные на . ставляет собой часть объектной команды, входе байтных шин блока И 156, разре- . то есть в восьмом разряде находится «О", шаюшие сигналы.: 35 то к счетчику 74 прибавляется + 2, а из
По окончании первой операции на блок счетчика 75 вычитается + 2, или, что то управления имйульсами сдвига 154 пода- же самое, прибавляется и вычитается + 1 ется сигнал, последний подает в блок И из второго по старшинству разряда соот-
155 и на вторые входы схем И,включен- ветствуюших счетчиков 74 и 75. Это обных на входе байтных шин блока И 156, . 40 условлено тем, что размер относительноразрешаюшие сигналы и в регистре 35 го адреса вместе с номером регистра баосушествляется перемешение информации, . зы равен двум байтам. как описано в таблице. Кроме того, де- При егоM, в соответствии с состоянишифратор 36, в соответствии с состояни,ем стекового регистра 35, анализируемоем регистра 35, выдает на вторые выхо 45 го дешифратором 36, содержимое последды относительный адрес соответствующе- него либо не изменяется, либо заносится го макрорасширения в таблице макрорас в стек 37, через блок И 40, а затем обширений. Разрешаюший импульс, подава«нуляется, либо в обнуленный регистр 35 емый на шину блока И 46 от блока 154, через блок И 45 заносится информация о позволяет считать относительный адрес с 50 невыполненных операциях очередного уров.выхода дешифратора 36 и прибавить его ня выражения (см. таблицу ), к адресу начала таблицы макрорасширений В случаях, если размер объектной пров счетчике 55. Для этого постоянные вре граммы превышает установленное число, мени линий задержки в блоке 56 выбра то в счетчике 75 появляется нуль, а дены так, чтобы постоянная времени в стар- шифратор 77 BblgBeT сигнал об ошибке
55 шем разряде была больше времени пере» в блок 14. ходного процесса в младших предшеству- Сдвиги информации в стеке 37 осушест юших разрядах. вляются следуюшим образом. в счетчике
674028
15 16
159 ведется счет сдвигаемой информации фикатора 6 и записывается по адресу в элемейтов памяти влево или вправо при счетчике 62 модификатора 10 с помошью каждом обрашении к регистру 37, а в устройства 3 и блоков чтения 16 и зепи счетчике 35 ведется счет откры blx уров- си 17 в ОЗУ 1. При этом входной сигнал ней в формуле, Счет этот ведетси следую - 5 подается на входы трех счетчиков 24, шим образом . при появлении открываюшей 25, 26 или четырех счетчиков 62, 63, скобки формулы к содержимому счетчика 64,65 одновременно.
35 прибавляется + 1, при появлении за» При записи символов адреса к содеркрываюшей скобки иэ содержимого счетчи жимому счетчиков 24, 25, 62, 63, 65 ка 3 вычитается + 1. В случае, если со- о прибавляется + l, а из содержимого счетдержимое счетчика 35 превысило допусти чиков 26, 64 вычитается + 1. При появ мое число или оказалось меньше нуля, де-. ленни в счетчике 64 нуля дешифратор71 шифратор 39 подает сигнал o6 ошибке в . подает закрываюший сигнал на вход триг» блок 14. Сигнал об ошибке подается и в гера 93. Последний закрывает блок И том случае, если появился символ оконча- 100 и открывает блок И 101.
, ния формулы, ", а содержимое счетчика :. Если размер символьного адреса ока»
35 не равно нулю или индексный уровень: . зался равным 8, то ключ его, сформиро» оказался открытым. : .,., " . . ванный к этому моменту в счетчике 65, При органиэации стека на ОЗУ 1 соот -, заносится в ОЗУ 1 по адресу в регистре : ветствуюшие занесения ийформации из Ре 2 68, Затем содержимое счетчика 62 чегистра 35 осушествляются через блок.И . рез блок И 67 заносится в регистр 68, 47 по адресу в счетчике 48. При этоМ,: после этого к счетчикам 62, 63 прибавв параллельно включенном счетчике 49 ляется + 1 и модификатор заканчивает ведется счет свободной частй стека, а . работу. дешифратор 51 выдает сигнал об ошибке . " Если размер сиМвольного адреса ока
; 25 в случае переполнения Стека ." " .: " зался меньше 8, то переключатель 34
Если очередным символомокааался опе " закрывает триггер 93, и осушествляетphTop концййроь рйрав0 илив четчике — — у .ся перехОд на запись ключа символьного
1 тановился нуль, То осуществляется переход к: Bgpec8 шестой операпйи, в противном случае осу,, Если размер символьного адреса окашествляетси переход к первой операции 1.".;; . зался больше 8, то очередной импульс эаТретья операция. Запись символьного :: писи через блок Й 101 йоступает в блок айреса, Эта операция свадится к описанию обработки ошибок, а не на входы счетчиработы модификатора адреса, изображенно-: .. ков 62-65, так как блок И 100 закрыт. го на фиг, 2 и на фиг. 3. -,:.-.:.:: ..—, После обработки ошибки в блоке 14 оче33
К йсходиому моменту s счетчике 62 : редной импульс записи может вновь прой находитси адрес свободной части ОЗУ 1, ти через блок И 101, Этот процесс повувеличенный на + 1, в- данном случае - : - : -- : торяется до тех пор, пока не появится адрес полуобьектной программы. В счет :„, " операторнйй символ, после чего осушестчиках 63, 64, 65 находится «0, в ре - вляется переход на запись ключа символьгистре 68 находится. адрес полуобъектной :: ного адреса размером в 8 байт. йрограммы, в регистре 88 находйтся раз- .. При работе модификатора 10 в счетчи мер полуобъектной программЫ...:: .,. ке 63 ведется счет объема памяти, заСчетчики 62, 63, 65 установлены на " ня ой полуо6ъектной программой. При совсиожение + 1, счетчик 64 установлен на падении содержимого счетчика 63 с содервычитание + 1. Триггер 93 включен и жимым регистра 73 дешифратор70выдает нри этом на шину блока И 100 подается соответствуюший сигнал о заполнении или разрешаюший сигнал, а на шину блока И переполнении области полуобъектной про
101 подается эапрешаюший сигнал,На ши- ., граммы. По окончании третьей операции ну блока И 102 подается разрешаюший осушествляется переход к первой операсигнал с выхода триггера 103. Триггеры ции, 93, 103 включаются устройством 3.
На первом такте считывается содер Йля использования. только счетчиков жимое регистра 94 число 8 в счетчик64 64, 65 подается сигнал, закрываюший через блок И 97, а восьмой разряд сче ° триггер 103, который закрывает блок И чика 65 устанавливается в "1". 1 02.
Затем символьный адрес побайтно счи- Четвертая операция. Запись литерала.
1 дывается по адресу в счетчике 24 моди- В восьмой и седьмой разряды счетчика-674028
65 заносится 1, в остальные шесть разрядов заносится «О".
Проверяется признак типа литерала и соответственно типу литерала в счетчик
64 из какого-либо регистра 94, 95, 96 заносится соответствуюшее число 63, 16, 8, указывающее максимальный размер для данного типа литерала.
Если литерал буквенно-цифровой (максимальный размер его 63), то он эаписы- 1О вается в полуобъектную программу под счетчиком 63 аналогично символьному адресу до признака конца литерала.
Если литерал цифровой, то управление передается в блок перекодировки чисел
13, где литерал перекодировывается соот» ветственно типу операции, хранящемуся и стековом регистре 35. По окончании пере кодировки литерал заносится в ОЗУ 1 под счетчиком 62 аналогично символьному ад
20 ресу, но исходная информация берется из блока 13.
В случае появления ошибки в записи литерала дешифратор 71 и блок 13 выда25 ют сигнал ошибки и блок 14.
По окончании четвертой операции осушествляется переход к первой операции.
Пятая операция. Запись метки. При по явлении признака (оператора) метки в ио ходном тексте осуществляется чтение сле» дующих за признаком символов по адресу в в счетчике 24 модификатора 6 и запись его в восьмибайтный регистр 18, При этом размер метки подсчитывается счет35 чиками 64, 65, а входы счетчиков 62, 63 блокируются, Затем по адресу в счетчике 79 считътвается очередная метка иэ таблицы меток в регистр 19, Это считывание осушестля- 40 ется следующим образом. Адрес таблицы меток из регистра 84 заносится в счет» чик 79, а содержимое счетчиков 80 и 81 заносится в регистры 95, 96.
Счетный вход счетчика 80 устанавливается в положение вычитания .+ 1, в счет» чик 81 считывается ключ метки по адре су в счетчике 79. Затем осуществляется чтение метки в регистр 19 до появления в счетчике 81 0 . При появлении в счетчике 81 0" осуществляется сравнение содержимого регистров 18, 19 с помощью устройства 2. В случае несовпадения на вход счетчиков 79, 80, 81 подаются два имлульса (то-есть пропускается огносительный адрес в два байта) и считывается очередная метка иэ таблицы меток в регистр 19.
Появление в счетчике 80 "0 и соот ветствуюшего сигнала на выходе дешифратора 86 означает, что просмотр таблицы меток закончен. Если к этому моменту совпадения регистров 18, 19 не было, то содержимое регистра 18 заносится в таблицу меток. Осуществляется это следующим образом.
По адресу в регистре 84 заносится ключ метки иэ счетчика 65 и ОЗУ 1. Затем содержимое регистра 84 заносится в счетчик 79, к счетчику 79 прибавляется:+1, восстанавливается содержимое счетчиков- 80, 81 из регистров 95, 96, счет ный вход счетчика 80 устанавливается на сложение + 1 и осуществляется побайтное чтение - запись символов метки по адресу в счетчике 79. При этом счетчикй
79, 80 работают на сложение, счетчик 81 на вычитание + 1т в счетчике 79 указывается адрес очередного свободного байта, в счетчике 80 — размер таблицы меток, в счетчике 81 - размер свободной части
ОЗУ 1 области таблицы меток.
По окончании записи меток содержимое счетчика 74, то есть относительный адрес метки, заносится в ОЗУ 1 по,адресу в счетчике 79, после этого содержимое счетчика 79 заносится в регист 84. На этом юрмирование записи в таблице меток заканч ив ает ся.
Совпадение содержимого регистров 18, 19 означает наличие ошибки «двух одинаковых меток. Поэтому при совпадении подается сигнал в блок 14, ошибочная метка не записывается, содержимое счетчиков восстанавливается прежним.
По окончании пятой операции происхо» дит. переход к первой операции.
Шестая операция, Загрузка фазы 2. В счетчики 52 53 заносятся адрес и раз мер области объектной программы, в счет» чики 24, 25 модификатора 6 заносятся адрес и размер области полуобъектной программы, Занесение данных в счетчики модификатора 6 и 9 может осуществляться либо из ячеек ОЗУ 1, либо из регистров сверхоперативной памяти устройства 2 и пото му в описании шестой операции строго не оговаривается. Размер области таблицы меток заносится из счетчика 79 в регистр 95.
Размер области нолуобъекгной программы заносится из счетчика 63 в счетчик
25, Указание, через какой именно блок И проходит это занесение, не дается, так
674028
20 как считается, что необходимый для это- случае совпадения содержимого регистров г