Система для трансляции с проблемноориентированного языка
Похожие патенты | МПК / Метки | Текст | Заявка | Код ссылки
Номер патента: 674028
Автор: Сентюрин
Текст
/2 дсударственный кдммтет СССР пд делам изобретений н дткрытий. М. Сентюрин нных управляющих маш 7 ) Заявите элек ст(В 4) СИСТЕМА ДЛЯ ТРАНСЛЯЦИИ С ПРОБЛЕМНООРИЕНТИРОВАННОГО ЯЗЫКА 1Изобретение относится к вычислительной технике,Известна система,в состав которойвходит стековая память с двумя верхними ячейками, выполненными на регистрах,блок управления, арифметический блок,триггеры занятости, счетчик операндов,блок чтения программ 1Использование в этой системе стековой памяти уменьшает быстродействие выполняемых программ в 1,5-2 раза, таккак запись и чтение информации в ячейкистека осуществляется последовательно, ане прямым (координатным) способом.Наиболее близкой по технической сущ-ности к данному изобретению является система, содержащая вычислительное устройство, соединенное двухсторонними связамис оперативным запоминающим устройствоми устройством управления, которое черезустройство управления каналами соединенодвухсторонними связами, с внешним запоминающим устройством, управляющий входоперативйого запоминающего устройства соединен с выходом:устройства управления 2).Однако такая система имеет низкуюскорость трансляции программ, написанныхна проблемно-ориентированных языках, так 5 как основные элементы ее и связи междуними выполнены программно в виде инструкции, Но применение программ для трансляции, как известно ухудшает один из основных показателей ЭфМ - скорость трано О ляцийТаким образом, в архитектуре и конструкции современных ЭВМ имеются элементы, разрешающие противоречие - либоповышенная скорость трансляции, либо по 1. вышенная скорость счета в сторонуулучшения только одной характеристики.Поэтому задача состоит в том, чтобыввести в архитектуру ЭВМ такие элементы, которые позволили бы устранить илидвусторонне уменьшить указанное противоречие.Целью изобретения является повышение быстродействия системы.как считается, что необходимый для это-случае совпадения содержимого регистров го занесения блок И является составной 18, 19 осушествляется чтение относительчастью одного из указанных счетчиков, ного адреса метки, расположенного вслед за Это относится и к другим подобным слу- меткой, по адресу в счетчике 79 и запись чаям, так как указание всех блоков И 5 его в область объектной программы по адсильно загромождает. схемы и описание их. ресу в счетчике 52 модификатора 9.Затем выполняется вторая фаза, состо При несовпадении содержимого регист яшая в реализации следующих операций. ров 18, 19 осуществляется аналогичноеСедьмая операция. Чтение ключа. Клю" чтение и сравнение следующей метки, Этот очередной записи полуобъектной програм процесс йовторяетЮ до тех пор, пока не мы считываются по адресу в счетчике 24 будет найдена нужная метка или счетчик модификатора 6 в счетчик 26 модификато не установится в нуль, Последний слу ра 6, затем к счетчику 24 прибавляется чай означает, что просмотр таблицы ме+1 и анализируются два старших разряда ток окончен, аметка не найдена. Для обключа. Если восьмой разряд ключа равен 15 работки этой ошибка с выхода дешифрато- "О", то осуществляется переход к восьмой ра 87 поступает сигнал в блок 14. операции, если седьмой разряд равен "0", По окончании девятой операции управто осуществляется переход к девятой опе- ление. передается седьмой операции. рации, если седьмой разряд ключа равен Десятая операция, Запись относительф 1", то "осуществляется переход к десятой 0 ного адреса литерала, Содержимое двух операции байт счетчика 74 модификатора 11, предВосьмая операция. Запись макрбрасши- ставляюшее собой конкатенацию номера рений, Очередное макрорасширение считы- базового регистра в старшей тетраде и от 15ае ся по адресу в счетчике 24 и заносит- носительный адрес конца объектной про ся в область объектной программы по адграммы в младших тетрадах (по этому адресу, в счетчике 52 модификатора 9. В мо- ресу будетзайисан ниже очередной литедификаторе 6 ведется счет байтов макро- .рал) заносится в поле объектной програм-расширения путем вычитания + .1 .из счет- мы по адресу в счетчике 52 модификаточика 26; появление "0" в счетчике 26 оз- ра 9. Затем литерал считывается из полуначает конец макрорасширения и соответ- объектной программы по адресу в счетчиствуюший сигнал с дещифратора 29 ос- ке 24 модификатора 6 и записывается в. танавливает запись; сигнализируя оконча- поле полуобъектной программы по адресу ние восьмой операции. Затем управление в счетчике 62 модификатора 10. передается седьмой операции.При этом содержимое счетчиков 24;Девятая операция. Запись относитель З 5 25, 52, 62, 63, 74 модификаторов 6, 9, ного адреса операнда (то есть символьно измейяется-на величину записываемого адреса). Регистры 18, 19 обнуляютМ, го литерала.в счетчики 79, 80 из регистров 94, 95 По окончании десятой операции осушестзаносятся адрес области таблицы меток вляется переход к,седьмой операции, и размер этой области. Счетчик 79 вклю- Выполнение второй фазы заканчива т-,40е чен на сложение + 1, счетчики 80, 81: ся с просмотром полуобъектной програмвключены на вычитание + 1,мы, т.е. при установлении содержимогоОперанд считывается по адресу в счет- счетчика 25 в ноль, о чем дешифратор чике 24 модификатора 6 в регистр 1828 выдает соответствующий сигнал, "дотех пор, пока в счетчике 53 не появит- Реализация описанных операций выпол 45ся "О. При этом дешифратор 29 подает няется под управлением устройства управ сигнал об окончании загрузки регистра ления 3,в котором выполнены прошивки, 18, Далее, ключ первой или очередной соответствующие этим операциям. метки считывается в счетчик 81, а на При обнаружении синтаксических ощи 50входы счетчиков 79, 80 подается импульс бок в исходной программе на первой и (+1), Затем первая или очередная метка . второй фазах трансляции в блок обработки считывается в регистр 19 по адресу в ошибок 14 подается сигнал на передачу счетчике 79, до появления в счетчике 81 управления, По этому сигналу блок 14 нуля Появление нуля означает окончание записывает в область ошибок текст пер 55:загрузки метки в регистр 19, что сигна- фокарты, в которой обнаружена ошибка, лизируется сигналом с дешифратора 87. если идет первая фаза трансляции.После этого осушествляется сравнение ре- Известно, что в заданных позициях пергистров 18, 19 с помощью устройства 2, В фокарты записан ее номер, который служит первой частью адреса ошибокВторойчастью адреса ошибки является номер ошибочного символа в перфокарте, которыйзаписывается после текста перфокартыблоком 14. После этого блок 14 записывает название ошибки. На этом составление записи об ошибке на первой фазе заканчивается.На второй фазе может быть только одна ошибка - отсутствие метки, Поэтомузапись об ошибке состоит из имени оши-бочной метки и названия ошибки.Работа блока ошибок 14 и всей системы при обнаружении ошибок осуществляется по принципу локализации и игнорирования 15ошибки, Реализация этих принципов позво 4ляет после занесения адреса ошибки в таблицу ошибок запускать систему в работудальше до тех пор, пока не встретится неошибочная ситуация, Это позволяет вы 20явить при одной трансляции максимальноеколичество ошибок. Стековый регистр 35выполняет операции, составляющие сутьпоэтапной трансляции алгебраических выражений,25Для определенности положим, что дляарифметики с плавающей точкой для первого подуровня берется второй регистр,для второго подуровня берется четвертый30регистр,В исходном состоянии во всех байтахрегистра 35 - нули.Заполнение регистра 35 сведено втаблицу.Информация в первый байт региста 35заноситсядля распознавания ошибки "отсутствие операнда" между двумя операциями, а так же для распознавания индеконой круглой скобки (в Фортране 1 У) отиерархической круглой скобки.Заполнение стекового регистра 35 осуществляется в следующем порядке: первыйсимвбл заносится в первый байт регистра35, затем дешифратор 36, в соответст 45вии с состоянием регистра 35, подаетсигнал на перемещение (сдвиг вправо)данного символа в определенный байт регистра 35,при этом символ С" во втором байте стирается,Если код первой операции начиналсязнаком кавычки , то этот знак занссится в восьмой байт, знак операции равенство ("=" ) или сравнение ( : " ) заносится а пятый байтсимвол типа ариф 55метикив седьмой байт регистра 35, Если код первой операции состоит из одногознака, в байтах 7 и 8 остаются пули. Закрывающие кавычки кода первой операции в регистр 35 не заносятся. Знак кавычки в восьмом байте позволяет записать в пятый байт символ типа арифметики. Символ типа арифметики служит переключателем при выборке констант соответствующей арифметики из таблицы макрорасширений.Знаки второй и третьей очередной операции заносятся соответственно в четвер тый и третий байт регистра 35, Выборказнаков стекового регистра 35 для трансляции осуществляется в порядке, определя емом соответствующим, состоянием стекового регистра 35. Состояния регистра 35 сведены в таблицу. При этом введены следующие обозначения; операция "трансляция (+)" означает трансляцию сложения,выполняемую арифметико-логическим устройством, операция "сдвиг" означает перемещение символов в регистре 35. В первой строчке указано исходное состояние регистра 35, в последующих-промежуточные состояния в последней - конечное состояние регистра 35,В таблице. используются все четыреалгебраических знака "+", "-", "х, "/";хотя знаки одного подуровня взаимозаменяемы и могут ставиться в соответствующих позициях произвольно.Символ ""означает наличие произвольного символа, символ "С" означает наличие символьного адреса, точнее, его последнего символа, так какпредыдушие символы зати-раются последним.Знак-индексная открывающая скобка " С" является операцией перехода на третий индексный подуровень, он заносится в третий байт регистра 35, При его появлении дешифратор 36 настраивается на выборку таких команд из таблицы макро- расширений, которые будут модифицироватьадреса операндов с помощью индексов.С появлением в первом байте регистра,33 знака зарятая ф," заканчивается модификация адреса операнда с помощью индекса.С появлением в первом байте регистра 33 знака закрывающая индексная скобка ",3 " заканчивается модификация адресас помощью очередного индекса, осушесг -вляется выход с индексного подуровня, азначение операнда, выбранное по модифицированному адресу, заносится в соответствуюший регистр, После этого содержимое первого, второго, третьего байтов регистра 33 устанавливается в нуль,Знак открывающая скоба (" являетсяоперацией перехода на очередной верхнийуровень алгебраического выражения (см.674028 24 23таблицу). Его появление в первом байтерегистра 33 настраивает дешифратор 34на выборку таких команд из таблицымакрорасширений, которые осуществляютзапись-промежуточных результатов иэ регистров 2 и 4 в оперативную память (встек промежуточных результатов, адрескоторого указан йрограммистом в общемрегистре 12),Затем дешифратор 36 подает сигнал на 10запись пятого и четвертого байта иэ регистра 35 в оперативную память (в стекопераций) под счетчиками 48, 49 черезблок схем И 47.После этого содержимое с первого попятый байт регистра 35 устанавливаетсяв нуль, и регистр 35 подготовлей дляприема знаков очередного уровня алгебраического .выражения.Знак закрывающая скобка ф)ф является операцией переходана очередной"нижний уровень алгебраического выражения.Его появление в первом байте регистра35 настраивает дешифратор 36 на выбор25ку команд из таблицы макрорасширвнийи запись их в полуобъектную программу.Эти команды осуществляют запись реаультата текущего уровня в свободныйрегистр 6, восстановление результатов30предыдущего уровня с помощью стека промежуточных результатов в регистр 2, 4,слияние результатов текущего уровня, т.е.содержимого регистра б, с результатомСостояния стекового регистра 3 восстановленного уровня с помощью соответствующего знака операции восстановленного уровня,Запись в стек операций и в стек результатов осуществляется и при нулевомзначении четвертого и пятого байта регистра 35 и регистров 2, 4. В случаенулевого значения байтов 5 и 4 регистра 35, запись результатов в стек результатов не нужна,С появлением знака точкас запятой ";" завершается трансляция выражения. При этом осуществляется слияние результатов второго подуровня (если они были) с результатами первого подуровня, игенерируется команда занесения результатапо адресу первого операнда или сравнение результата с числом, адрес которогоуказан первым операндом.Затем стековый регистр 35 устанавливается в нуль и он готов для трансляцииследующего выражения,Оля использования круглых скобок "( )ф в качестве индексных необходимо увеличить стековый регистр 35 до девяти байт, отвести под индексные скобки специально третий байт, соответственно сдвинуть расположенйе других знаков и внести соответствующие изменения в дешифратор 36,Ввиду тривиальности действий с индексными скобками соответствующие состояния регистра 35 в таблице не показаны.5 (с 1 по 6 байт)1 СООООО 000000000= 2 +СООО= ОООО+= 3 /СОО+= 0003+= 4 м СО/+=ОООН+= 5 СОх+=0000-=6 +СОО0000+= Трансляция (=) загрузки первого операнда в общий регистр, сдвиг (=)РезультатТрансляция загрузки второго операнда, сдвиг (+)РезультатТрансляция загрузки третьего операнда, сдвиг (/)РезультатТрансляция (/), сдвиг (+ )РезультатТрансляция (Ф), (+) со слиянием результатов (Ф), сдвиг (-)РезультатТрансляция (-), сдвиг (+)Реэультат674028 Продолжение таблицы Трансляция загрузки первого операнда, сдвиг (ф)РезультатТрансляция (4), сдвиг (/) 7 м СООО=ООООФ= 8 /СООТГ=0000/= Результат Трансляция (/), сдвиг (+)Результат 9 +СОО/= ОООО = 10 (0000= 00000= 1 1 (000+= 00000= 12 (00/+=0)ОПП= Результат (см. пй. 2-9)Трансляция (/), (+) со слиянием результатов (/), занесение результатов (+) в регистр 6, выл рузки иэ стека, результатов, сдвиг ф)"Результаты (см. пп. 2-9) 15 )СО/+= 0)ОПП= Трансляция (Ф) результатов регистров 2 и 6, обнуление третьего байта 16 0)ОМ+= 0000+ --РезультатЧтение очередного знака в регистр 35 17 О 00+=П)О= РезультатТрансляция (+) к регистру 2 регистра 6, сдвиг (-) 18 -)00+=0000 - 19 /)00+=000/+= Результат,Трансляция загрузки регистра 6 в регистр 4, сдвиг (/) РезультатТрансляция (+), обнуление 5 и 4 байтРезульта т 20 3 СОО+=, Загрузка пятого и четвертого, байтов регистра 35 в стек невыполненных операций, обнуление РезультатТрансляция загрузки стека невыподнеинь 1 х ойерацийи стека результатов из регйстров 2 и 4, обнудение РезультатТрансляцйя загрузкй стека невыполненных ойерапий и стека результатов из регистров 2 и 4, обнуление РезультатВыгрузка двух байт из стека невыйолненвых операций, и занесение их в пятый и четвертый байт регистра 15 Результат (см. пп. 2-9 таблицы)Трансляция (+), вьпрузка двух байт из стека невыполйенных операций, трансляция зайесения" результатов(+) в регистр 6, выгрузки из стека резудьтатбв и загрузки их в регисФрй 2 и 4, сдвиг ф)"; 000= Загрузка результата из регистра 2 по адресу первого операнда или сравнение, если в шестом байте знак .:",обнулениеРезультат -" 22 ; СООО= 000000 Результаты 1Работа блока перекодирования чисел 15 счетчик 123 эайосится размер этой об.13 (см. фиг. 4) осуществляется следую-ласти, в счетчик 122 - адрес областищим образом."таблицы ошибок, увеличенный на + 1, вПризнак кода первой операции арифме- регистр 148 адрес таблицы названийтического выражения с выхода дешифратоошибок.ра 36 постуйает на переключатель режи Регистр 139 предназначен для отслежи 20мов 108, Положим, чтонеобходймо пере- вания. адреса начала строки исходного теккодировать число иэ сймвольной распако- " "стапрограммы, По сигналу начала новойванной формы в двоичный код с плаваю-.строки, подаваемому от дешифратора 28,щей точкой,в регистр 139 через блок И 141 заноситРазмер числа поступает в счетчик 109 ся содержимое счетчика 24 - адрес стро 25через блок И 116 "а число эаносится в реки.гистр 105 через блок И 113, По оконча- . При йоявлейии сигнала ошибки на вхонии занесений переключатель 108 запус 1 де переключателя 150, последний подаеткает регистр 105, который упаковывает разрешающий сигнал на шины блоков И, числоПо окончании работы регистр 105 127, 136,. 138; 149. При этом содержи 30подаетсигнал в переключатель 108, аос- .,мое счетчика 25 (номер ошибочного симледний-подает разрешающий сигнал на ши- вола в строке) заносится в устройство пе-ну блока И 114 и число зйносится"в узел рекодировкй двойчного числа в десятичноеперекодировки десятичных чисел в двоич, где оно перекодируется в десятичные 106, после чего переключатель 108 . ное упакованное число, Затем устройство35запускает узел-блок 106 134 передаетуправление и результат вПо окончании работы узел 106 выдает" распаковывающий регистр 135, где оносигнал в переключатель 108, последнийрасйакоййваетЬя и преобразуется в символьподает сигнал на шину блока И 115, со-.ный формат.40держимое узла 106 заносится в узел пе- . Параллельно с этим одержимое регист"реиодировки двоичнйх чисел в двоичные ра 139 заносйтся через блок И 138 вчисла с плавающей запятой 107. К этомусчетчик 140, и содержимое регистра 148моменту в счетчик 111 через блок И 117 через блок И 149 заносится в счетчикзаносится порядок исходного числа. Затем 147. После этого переключатель 150 по 45переключатель 108 запускает узел 107. дает разрешающий сигнал на шину блокаПо окончании работы узел 107 выдает И 145 и относительный адрес названийсигйал в переключатель 108, а последний ошибки в таблице названий ошибок с выхо 1подаетразрешающий сигнал на шину бло дов дешифратора 153 через блок задержка И 121 и результат пройдя черезблок ки 146 поступает на входы счетчика 147/ 50ИЛИ 120, снимается с выходов блока 121, и суммируется сего содержимым. ЛинииПромежуточные результаты, упакован задержки в блоке 146 подобраны так, чтоныеили двоичйые числа считываютси"соот- постояййФ Времени задержки в каждомветственно через блоки 118, 120, 121 . разряде превосходит время переходногоипичерез блоки 119, 120, 121, процесса сложения в младших предшествуРабота блока обработки ошибок (фиг,5) ющих разрядах.состоит в следующем. Перед началом рабо- При появлении разрешающего сигналаты в режиме загрузки в регистр 139 за" на.шине блока И 132 содержимое регистносится адрес области таблицы ошибок, в ра 144 (число 80) заносится в счетчик67402829 30125,После этого переключатель 150 по- мер метки в байтах, а вместо записи 80дает в устройство управления 3 сигнал байт перфокарты будет записана метка,на чтение перфокарты с ошибкой по адре- последовательность микроопераций работысу в счетчике 140 и запись ее в область блока 14 при этом не изменится,таблицы ошибок по адресу в счетчике 122 5 Работа стека; изображенного на фиг. 7,Г 1 ри этом счетчики 140, 122,124 рабо- состоит в выполнении следующих операций:тают на сложение +1, а счетчики 123, загрузки и выгрузки.125 - на вычитание +1, Перезапись окан- В исходном состоянии стека счетчикчивается, когда в счетчике 125 появится 159 и регистр 161 установлены в нуле."0" и дешифратор 127 подает при этом10 В режиме загрузки переключатель 158сигнал в переключатель 150, останавдива- подает на шину блока И 166 раэрешаюющий перезапись. щий сигнал, и содержимое регистра 161Затем на входы счетчиков 122, 123, заносится в счетчик 159, к которому за 124 подается импульс для записи одно-. тем прибавляется +1. После этого перебайтного разделителя. 5 ключатель 158 включает выход генератоПосле этого содержимое регистра 135 ра 157 на отрицательный (т.е. на вычи, через блок И 137 считывается в ОЗУ 1 тание +1) счетный вход счетчика 159,по адресу в счетчике 122, для чего раз- Выходы счетчика 159 анализируются демер записи из регистра 135 заносится в, шифратором 160, с выходов которого разсчетчик 125. 20 решающие сигналы поступают на байтныеПри появлении в счетчике 125 и нуле шины блока И 163, в соответствии с часвого сигнала на выходе дешифратора 127 тотой генератора 157. При этом содержизапись содержимого регистра 135 в ОЗУ мое элементов памяти блока 162 переза 1 прекращается переключателем 150, Пос- писывается со сдвигом вправо на одинде этого переключатель 150 подает сигнал 5 элемент памяти, Период генератора 157на чтение ключа названия ошибки по адре выбирается большим переходного процессу в счетчике 147 и запись его в счетчик, са при перезаписи элементов в блоке 162,125, После чтения ключа к содержимому При появлении в счетчике 159 числа 0",счетчика 147 прибавляется +1 и переклю- дешифратор 160 подает сигналпереключатель 150 подает сигнал в устройство 0 чатель 158, последний отключает входуправления 3 на чтение названия ошибкисчетчика 159 от генератора 157 и перепо адресу в счетчике 147 и запись его запись прекращается,в строку таблицы ошибок по адресу в счет- После этого в освободившийся старчике 122, ший элемент памяти блока 162 (т.е. воПри появлении в счетчике 125 нуля З 5 входные байты) заносится информация чедешифратор 127 выдает сигнал в переклю- реэ блок И 168, переключатель 158 початель 150, и последний подает сигнал дает разрешающий сигнал на шину блокав устройство 3 об окончании перезаписи. И 167 и содержимое счетчика 159 заноПосле атого содержимое счетчика 124, сится в регистр 161 через блок И 167.40т.е, ключ записи, через блок И 133 эано- На атом загрузка стека кончается,сится в ОЗУ 1 по адресу в регистре 130 При выгрузке стека 162 на шину блоа затем содержимое счетчика 122 через ка И 169 подается разрешающий сигналблок И 129 заносится в регистр 130, и содержимое старшего элемента памятиНа атом формирование записи в табли блока 162 выгружается из стека. Далее,це ошибок заканчивается и управление пе- переключатель 158 подает сигнад в счет 45редается на продолжение трансзщции в чик 159, устанавливая его в нуль, и вклюблок, откуда пришла ошибка, с помощью чает на положительный вход (т.е. на слоустройства 3, жение +1 счетчика 159 выход генератоВ случае появления нуля в счетчике ра 157, при. этом дешифратор 160, ана 123 дешифратор 126 выдает сигнал о за лиэирующий состояние счетчика 159, пода50полнении области таблицы ошибок в уст- ет разрешающие сигналы на байтные шиныройство 3. блока И 163, осуществляя перезапись эле- .Работа блока ошибок 14 на второй фа ментов памяти со сдвигом влево на одинзе имеет следующие отличия, Ключ метки элемент. При совпадении содержимогозаносится в счетчик 125 и в регистр счетчика 159 и регистра 161 блок И 16555.135, адрес метки заносится в регистр вырабатывает сигнал окончания переэапи 139. Таким образом, вместо номера оши- си, подавая его в переключатель 158, Побочного байта в записи будет стоять раз- следний переключает отрицательный вход31счетчика 159 на выход генератора 157на один такт, т,е. для уменьшения содержимогосчетчика 159 на +1.После этого, переключатель 158 отключвет вход счетчйка 159 от выхода генератора 157 и подает. на шину блока И167 разрешающий сигнал, при этом содержимое счетчика 159 заносится в регистр161 и выгрузка иэ стека заканчивается,Описанный стек может применяться нэ 10только при трансляции, но и при вычислении алгебраических выражений, для чегодолжны быть введены в ассемблер ЭВМкоманды загрузки и выгрузки стека.Результатом работы системы является перемещаемый программный Модуль,составленный в кодах машин. В текстемодуля находится программно организованный стек, йспользующий часть регист-ров и часть памяти оперативного запоминающего устройства, для хранения результатов промежуточных вычислений алгебраических выражений.Вля трансляции. алгебраических выражений с фортранУ и Алголнеобхо25димо в строках таблицы меток, таблицылитералов ввести байт привяла чисел.Этот прйэнак следует испольэовать прикоррекции кода операции. Если число име .ет признак вещественного, то в код опе 30рации вводится коррекция, преобразующаяданный код в код операции над числамис плавающей запятой, если число имеетпризнак целого, то данный код преобра"зуется в код операции над целыми числами,Зля выполнения этой коррекции необходимо в устройство управления 3 ввести.дополнительные элементы, позволяющие40организовать цикл коррекции кода операции,повторяющийся столько раз, сколько ойе раций имеется в алгебраическомвыражении, Из этого следует, что время трансляции алгебраических выражений наязыке АМАС 1 меньше времени, трансляции на45языках ФортранУ или Алголна интервал времени, затрачиваемый на вынолпение цикла коррекции кода операции.50формула изобретения1. Система для трансляции с проблем 1 но-ориентированного языка, содержащая вычислительное устройство, соединенное двухсторонними, связями с оперативным запоминающим устройством и устройством 32 управления, которое через устройство управления каналами соединено двухсторонними связями с внешним запоминающим устройством, управляющий вход оперативного запоминающего устройства соединен с выходом устройства управления, о т л ич а ю щ а я с я тем, что, с целью повышения быстродействия, в нее введены модификаторы адреса символов исходного текста, адреса макрокоманд, адреса полу- объектных команд, адреса объектных команд, адреса меток, символьный анализатор, операторный анализатор, блоки перекодировки чисел и обработки ошибок, управляющие входы которых подключены к выходу устройства управления, выход вычислительного устройства соединен с первьми входами символьного и операторного анализаторов и блока перекодировки чисел, первый выход и второй вход символь.ного анализатора соединены соответственно со вторым входом и первым выходом операторного анализатора, второй выход которого подключен к первому входу модификатора адреса макрокоманд, третий выход соединен с первыми входами модификаторов адреса.полуобъектных команд и адреса объектных команд, четвертый выход. подключен к первому входу модификатора адреса меток, первые выходы блока пе рекодировки чисел, модификаторов адреса меток, адреса объектных команд, адреса полуобъектных команд, адреса символов исходного текста, второй выход символьного айализатбра и пятый выход операторного анализатора соединены с первым входом блока обработки ошибок, второй выход блока перекодировки чисел, .первые выходы блока обработки ошибок и модификатора адреса макрокоманд, шестой выход операторного анализатора и третий выход символьного анйлизатора соединены со входом устройства управления, седьмой выход опе- . раторного анализатора подключен ко входу модификатора адреса символов исходного текста, вторые входы модификатора адреса макрокоманд. модификатора адреса меток и блока обработки ошибки соединены с выходом оперативного запоминающего устройства, входы которого соединены с соответствующими выходами введенных модификато ров, анализаторов, блока перекодировки чисел и блока обработки ошибок2. Система по и. 1, отличающ а я с я тем, что символьный анализа тбр содержит два счетчика, выход первого из которых соединен со входом блока И, первый управляющий вход которого подключен к уйравляющему входу символьного анализатора, выход второго счетчика соединен со входом дешифратора, выходы которого подключены соответственно к первому, второму и третьему выходам сим вольного анализатора, первый вход которого соединен со входами. счетчиков, второй вход -.со вторым управляющим входом блока И, выход которого соединен с выходомсимвольного анализатора. 103. Система, по п. 1, о т л и ч а ю -. щ а я с я тем, что операторный анализатор содержит переключатель, стеко- вый регистр, первый выход которого под ключен ко вхоДу дешифратора, первый и второй выходы которого соединейы соответственно с первым входом переключателя и первым входом стекового регистра, второй вход переключателя соединен с уйравляющим входом ойераторного анализа тора, третий вход переключателя и второй вход стекового регистра соединен с первым входом операторного анализатора,второй вход которого соединен с четвертымвходом переключателя, выходы которогос первого по четвертый подключены соответственно к выходам с первого по четвертый операторного анализатора, пятый,шестой и седьмой выходы которого соединены соответственно с третьим выходомдешифратора, вторым выходом стековогорегистра и пятым выходом переключателя, четвертый выход дешифратора подключен ко второму выходу операторного анализатора, третий вход и третий выход стекового регистра-соединены соответственно со входом и выходом операторного анализатора,Источники информации, принятые вовнимание при экспертизе1, Патент США М 3593312,кл, 340-172,5, 1971.2, Опубликованная заявка Великобритании1407761, кл. ОР 15/20,1975,3Поставленная цель достигается тем,что в предлагаемую систему введены модификаторы адреса символов исходного текста, адреса макрокоманд, адреса полуобъектных команд, адреса объектных команд, адреса меток, символьный анализатор, операторный анализатор, блоки перекодировки чисел и обработки ошибок, уп" равляющйе входы кбторьх подключены квыходу устройства управления," "выход вы числительного устройства соединен с первыми. входами символьного и операторного анализаторов и блока перекодировки чисел, первый выход и второй вход символьного .: анализатора соединены соответственно со 15Ьтофым" входом- и -первым"выхбдом "оперативного анализатора; второй вряд-кото рого подключен к первому входу модификатора адреса макрокоманд, третий выход соединен с первыми входами модифйкато 20 ров адреса полуобъектных команд и адреса объектных команд, четвертый выход подключен к первому входу модифика- тора адреса меток, первые выходы блокаперекодировки чисел, модификаторов адре б са меток, адреса объектных команд, адреса полуобъектных комайд;"адреси символов исходного текста, второй выход символьного анализатора и пятый выход" опера-торного анализатора соединены с первым З 0входом блока обработки ошибок, второй выход блока перекодировки чисел, первые выходы бйока обработки ошибок и модификатора адреса макрокоманд, шестой выход, операторного анализатора и третий выход" сймвольного анализатора соединены со входом устройства управления, седьмой выход операторного аналйаатора подключен ко входу модификатора адреса символов исходного текста, вторые входы модифи40катора адреса макрокоманд, модификатора адреса меток и блока обработки ошибок соединены с выходом оперативного запо минаюшего устройства, входы которого соединены с соответствующими выходами введенных модификаторов, анализаторов, блока перекодировки чисел и блока обработки ошибок; кроме того, символьный анализатор в системе "содержит два счет чика, выход первого из которых соединен со входом блока И, первый управляющий вход которого подключен к управляющему входу символьного анализатора, выход вто рого счетчика соединен со входом дешиф55ратора, выходы которого подключены соот ветственно к первому, второму и третьему выходам символьного аналйзатора, первый вход которого соединен со входами счет 4 чиков, второй вход - со вторым управляющим входом блока И, выход которого соединен с выходом символьного анализатора,операторный анализатор в системе содержит переключатель, стековый регистр,первый выход которого подключены ко входудешифратора, первый и второй выходы которого соединены соответственно с первымвходом переключателя и первым входомстекового регистра, второй вход переключателя соединен с управляющим входом операторного анализатора, третий вход переключателя и второй вход стекового регистра соединены с первым входом операторного анализатора, второй вход которого соединен с четвертым входом переключателя, выходы которого с первого по четвертый подключены соответственно к выходам с первого по четвертый операторногоанализатора, пятый, шестой и седьмой выходы которого соединены соответственно с третьим выходом дешифратора, вторым выходом стекового регистра и пятым выходом переключателя, четвертый выход дешифратора подключен ко второму выходуоператорного анализатора, третий вход и третий выход стекового регистра соединены соответственно со входом и выходомоператорного анализатора.На фиг. 1 показана блок-схема предлагаемой системы; на фиг, 2логическаясхема системы; на фиг. 3 - логическаясхема модификатора адреса; на фиг. 4 логическая схема блока перекодировки чисел; на фиг. 5 - логическая схема блокаобработки ошибок," на фиг. 6 логическаясхема стекового регистра; на фиг. 7- логическая схема стека; на фиг, 8, 9- схемы реализации символьного анализатора; на фиг, 10 - операторного анализаСистема включает в себя оперативное запоминающее устройство 1, вычислитель ное устройство 2, устройство управления 3, устройство управления каналами 4, внеш; нее запоминающее устройство 5, модификатор адреса символов исходного текста 6, символьный анализатор 7, операторный анализатор 8, модификатор адреса макрокоманд 9, модификатор адреса полуобъектных команд 10, модификатор адреса объектных команд 11, модификатор адреса ме ток 12, блок перекодировки чисел 13,блок обработки ошибок 14.Более детально система представленана фиг. 2, где дешифратор 15, блок чте ния 16, блок записи 17 являются элементами оперативного запоминающего устрой674028 Составитель А. ЖереновН. Каменская Техред 3. фанта Корректо А, Власенк Реда атент, г. Ужгород, ул. Проектная, 4 лиал П з 4080/46 Тираж 779 ПодписноеБНИИПИ Государственного комитета СССРпо делам изобретений и открытий113035, Москва, Ж 35, Раушская наб., д. 4 Л5сгва (ОЗУ) 1; регистры операндов 18,19 соединены с вычислительным устройством 2 блоками 20, 22 И, блоком 21И - с ОЗУ 1, блоком 23 И - с операторным анализатором 8; модификатор симво-лов исходного текста 6 состоит иэ трехпараллельно включенных счетчиков 24,25, 26, причем выход счетчика 24 черезблок 27 И соединен с дешифрагором ОЗУ15, выход счетчика 25 соединен с дешифорагором 28, нулевой выход которого соединен с третьим разрядом счетчиков 24,26, а выход счетчика 26 через дешифратор 29 соединен с блоком, обработки ошибок 14, 15Симводьный анализатор 7 выполнен(см. фиг. 2 и фиг, 8) из двух счетчиков30, 31, причем выход счетчика 30 соединен через блок 32 И с дешифратором ОЗУ15, выходы счетчика 31 соединены через 20дешифратор 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. 6Модификатор адреса макрокоманд 9 выполнен в виде двух параллельно включенных счетчиков 52, 53, причем входы счетчика 52 соединены с регистром 54 черезблок 55 И, входы младших разрядов счет-чика 52 соединены через блок линий задержки 56 с блоком 46 И, выходы сче 1чика 52 соединены через блок 57 И сдешифратором ОЗУ 15, входы счетчика53 соединены через блок 58 И с выходами ОЗУ 1, выходы счетчика 53 соединенычерез дешифратор 59 с устройством управления 3, клеммы 60, 61 являются входами блока 58 И и дешифрагора 59 соответственно,Модификатор адреса полуобъекгных команд 10 выполнен из чеирех параллельно включенных счетчиков 62, 63, 64,65,причем выходы счетчика 62 соединены сдешифратором ОЗУ 15 через блок 66 Ипо первой ветви и через блок 67 И, регистр 68, блок 69 И - по второйветви, счетчики 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, и отличиеего от первого варианта состоит в том, что выходы дешифрагора объединены в алфавитные группы букв,цифр, операторов, разделителей по кодамсимволов, а не по номеру в алфавите, какв первом варианте,Более детально схема модификатораадреса 10 представлена на фиг, 3, Он выполнея из триггера 93, регистров 94,95, 96, соединенных через блоки 97, 98,99 И со счетчиком 64, выходы триггера93 соединены с шинами блоков И 100 и101, блок И 102 включей на входе счетчиков 62, 63; выход триггера 103 соединен с шиной блока И 102, блок И 104включенна входе регистра 73, выходыкоторого соединены параллельно вЫходамсчетчика 63 на входах дешифратора 70,Триггер 93 и блоки И 100, 101 представляют собой переключатель счетныхимпульсов,Применение модификаторов адреса, состоящих из нескольких параллельно включенных счетчиков, позволяет осушествлятьнесколько процессов одновременно, чтоприводит к увеличению скорости трансляции.Схема блока перекодировки чисел 13представлена на фиг, 4, Этот блок выполнен из упаковываюшего регистра 105,узда перекодировки упакованнь 1 х десятичных чисел и двоичных- чисел в двойные106, узла перекодировки двоичных чиселв двоичные числа с плавающей запятой107, переключателя режимов 108, счетчика.109 и дешифратора 110 упаковывающего регистра 105, счетчика 111 и де- .шифратора 112, причем"блок 105, 106, З 5107 соединены йоследовательно через блоки И 113, 114, 115, на входах счетчиков 109 и 111 включены блоки И 116,.117, выходы блоков 105, 106, 107 соединены через блоки И 118, 119, и блок 4 ОИЛИ 120 с выходнымблоком И 121;Ле.тальная схема блока обработкйошибок представлена на фиг. 5, Этот блок выполнен в виде устройства, содержащегочетыре параллельно включенных счетчика 45122123, 124, 125, при этом на выходе счетчиков 123, 125 включены дешифраторы 126, 127, На выходе счетчика122 включены блоки И 128, 129,регистр:130 адреса ключа защиты и блок И 131;50блок И 132 включен на входе счетчика125 позицией 133 обозначен управляю-". щий вход блока 14. Устройство перекоди"рования двоичных чисел в десятичные 134соединено со входом регистра распаковки135, блоки И 3.36, 137 включены навходе блока 134 и выходе блока 137,блок И 3.38 включен между регистром 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, НблоковИ 163, 164, причем выход генератора159 соединен через переключатель 158со входом счетчика 159, один выход дешифратора соединен с переключателем158, а остальные Нвыходов дешифратора 160 соединены с шинами блоков И162, 164 в порядке возрастания их номеров, выходы блоков И 163, 164 соединены со входами элементов памяти, а выходы Н. элементов памяти, начиная спервого, соединены со входами Нблоков И 163, 164, позицией 165 обозначен блок И, выходы счетчика 159 черезблоки И 166, 3.67 и регистр 161 включены к входам счетчика 159.Лля простоты иэображения стек нафиг, 7, выполнен иэ четырех элементовпамяти, но он может быть увеличен дозаданного объема, при этом принципиаль6740289 10 .ных изменений конструкция стека не пре в результаттрансляции заносятся объектерпевает. тные команды, реализующие загрузку иНумерация элементов "на фиг. 8, 9,10 выгрузку результатов вычислений в пасоответствует нумерации на фиг. 2 мять ОЗУ йо стековому способу.Описываемый транслятор предназначен 5 Предлагаемый способ является усовердля трансляции программ. с пробдемно- шенствованием- известного способа трансориентированного языка АМАСи с не ляции Мидьнеса и ПОЛИЗа, основанногосущественными дополнениями ой можетна прямом просмотре формулы исходногобыть использован для трансляции алгеб . текста программы, вычислений промежураических выражений на фортран 1 У и 1 О точных результатов, загрузки формулы встек в инверсном представлении ее с по Усовершенствование языка АМАС 1, следующей выгрузкой формулы из стекласостоит в том, что признак типа опера- и вычислением результата. По этому меции, записанный в первом действии алгеб" тоду в текст загружается вся формулараического выражения, автоМатически рдо;. 5 вместе с операциями.пространяется на все последующие дейст Последнее обстоятельство не позволявия этого выражения ет осуществлять анализ одновременно всехУкаэанное правило практически не уо . ячеек стека или отдельных его частей, такложняет трансляции, но упрощает програм как стек в этом случае может иметь беомирование. конечное количество состояний,Например, алгебраическое выражениеВ описанном выше методе для анализаА =С+ К-М для вещественных чисел точ-формул используются два стека. Причем,но так же изобраэится на языке Фортран стек уровня в виду койечного количества1 У АМАС и МИГ. Дляи АМАС- . лля целых чисел состояний (не больше четырех операций)это выражение на ФортранУ останется 5 может анализироваться с помощью аппабеэ изменения, на АМАС и АМАСоно ратного устройства - дешифратора однопримет соответствующий вид: временно по всем ячейкам что увеличф е ю и и у Ф ФА = В С + В К - В Ми А = В С+ вает скорость трансляции,+К-М. Кроме того, загрузка в стеки толькоСуть способа трансляции алгебраичео- З 0 операции увеличивает скорость загрузкиких выражений, реализуемого описываемой и выгрузки в стек и увеличивает в целомсистемой, состоит в следующем: скорость трансляции, а загрузка в стек воператоры программы на исходном тек- процессе вычислений только промежуточсте заменяются на макрорасшйрения мак-ных результатов не уменьшает скоростьрокоманд в объектных кодах; 55 вычислений.формула делится на уровни; При этом, под уровнем формулы принитрансляция алгебраических формул осу- . мается часть алгебраического выражения,ществляетм поэтапно - от уровня к уровню: заключенная между открывающей и закрыколичество этапов равно количествувающей скобками одной степени вложенуровней,40 ности. Под степенью вложенности понимакаждый уровень делится на два подуровется число, указывающее номер открываюня: первый подуровень .состоит из опера щей скобки и последовательности открываций сложить, вычесть; второй подуровень ющих скобок в алгебраическом выражении,состоит иэ операций умножить, поделить; при условии равенства открывающих и эатрансляция осуществляется с помощью, кряваюших скобок. При нулевой стегени45двух стеков стека уровня и стека невы- вложенности скобки отсутствуют.полнеиных операций; Трансляция очередного уровня можетмаксимальное количество уровней, до прерываться появлением старшего по степускаемых в формуле, определяется объе- пени вложенности уровня. При этом реэудьмом стека невыполненных операций и мо . таты трансляции очередного, то есть пре50жет, например, равняться 32; . рванного и незакрытого уровня запоминав стек уровня, выполненный в виде сте- ются в стеке. По завершении трансляциикового регистра, загружается не более че- . высшего уровня осуществляется переходтырех операций: первая, последняя опера на трансляцию прерванного низшего уровция первого подуровня, последняя .операция ня и т.д., пока не закончится трансляция55второго подуровни и очередная, в стек всего выражения.уровня загружается также признак типа Макрорасширения в объектных кодахпервой операции; делятся на два типаеМикрорасширенияпервого типа имеютвсе дануще для их выполнения и состоятиз объектных команд. Макрорасширениявторого типа представляют собой полуобъектные команды без адресной части.Трансляция осуществляется в две фазы.На первой фазе исходный текст заменяется макрорасширениями, при этом непосредственно после записи микрорасширенийвторого типа заносит вторая адресная 1 Очасть этих команд из программы на проблемно-ориентированном языке в виде символьного адреса или литера. Результатом первой фазы является полуобъектнаяпрограмма,5На второй фазе символьные адреса илитералы заменяются их Относительнымиадресами в объектных кодахи на этом" трансляция кончается. Результатом трансляции является перемещаемый программный 20модуль в объектных кодах.Система работает следующим образомвыполняя соответствующие режимы,Режим (ЗТ) загрузки данных. В этомрежиме массив макрокоманд заносится с.внешнего запоминающего устройства 5 вОЗУ 1 и адрес начала этого массива заносится в модификатор адреса макрокоманд 9.Режим (ЗП) загрузки исходного текста программы и параметров транслятора.В этом режиме исходный текст программы на проблемно-ориентированном языкезаносится в ОЗУ 1 и адрес начала и раз: мер этого текста, а также размер строк З 5этого текста заносится в модификатор адреса символов исходного текста 6. Кроме гого, в модификаторы адреса 10, 11,12, заносятся соответственно адреса иразмеры областей полуобъектной и объектной программы, номер регистра и адрес иразмер области таблицы меток, Вблок обработки ошибок 14 также заносят-ся адрес и размер области таблицы названий ошибок и таблицы ошибок, Режим ЗПможет выйолняться многократно поСле одсФнократного выполнения режима ЗТ. Режимы ЗТ и ЗП выполняются подуправлением операционной системы ЭВМ. Размеры мйисей объектных, полуобъект- жх макрорасширений, а также меток, литералое и констант"мносятся в "ключ, расположенный в нулевом байте укаэанных записей.55Старший восьмой разряд ключа,"равный "1", является признаком макрорасширения первого типа, а равный 0" - является признаком макрорасширения второго типа.Седьмой разряд ключа, равный "1", является признаком литерала, а равный "0"- является признаком символьного адреса в макрорасширении второго типа.Из этого следует, что максимальная, длина макрорасширений первого типа может достигать 127 байт, а литераловдо 63 байт,Ключи макрорасширений составляются й записываются в их записи перед загрузкой таблицы макрорасширений в ОЗУ 1. Остальные ключи формируются транслятором,Режим работы фазы 1 состоит в выполнении следующих операцийПервая операция, Анализ символов. Этаоперация выполняется символьным анализатором. Блоки 6 и 7 устанавливаются висходное состояние. Это значит: в счетчике 24 находится адрес очередного символа исходного текста, в счетчике 25 - номер этого символа в строке текста, всчетчике 26 - размер неоттранслированнойчасти"текста, В счетчик 30 заносится адрес алфавита исходного текста, записанный из регистра 94 через блок И97, в счетчик 31 - размер алфавита в символах, в регистр 139 содержимое счетчика 24,Очередной символ считывается по адресу в счетчике 24 и заносится в регистр 18 ив стековый регистр 35 через блок И 91. Далее, первый (или очередной) символ алфавита считывается по адресу в счетчике 30 в регистр 19. Йалее, содержимое регистров 18 и 19 через блоки И 20, 22 заносится в вычислительйое устройство 2, где осуществляется их сравнение, Если при этом символ окамлся оператором (или частью оператора), то управление передается на выполнение второй операции; если символ оказался признаком символьно 3 о адреса, то управление передается на выполнение третьейоперации; если символ оказался литералом, то управление передается на выполнение четвертой операции; если .символ оказался признаком матки, то управление йередается на выполнение пятой операции.После каждой операции сравнения ксчетчику 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, Это необходимо для того, чтобы но О дах счетчика 53 нуля, дешифратор 59 вымер перфокарты, записанный в 73-80 ко- дает сигнал об окончании записи макрораолонку перфокарты, не анализировался как ширения, при этом содержимое счетчикатекст программы. Далее счетчик 25 ус заносится в ОЗУ 1 по адресу в ретанавливается в.нуль и осуществляется гистре 68, тоесть, записывается ключ спереход в начало первой операции на уо нулем в восьмом разряде, что являетсятановление в исходное состояние счетчи- , признаком того; что эта запись будет пе-ков 30, 31 и регистра адреса начала стро- ; реноситься в поле объектной программыки 1 39 блока 14. без изменения,Появление нуля в счетчике 26 означа-После этого содержимое счетчика 62ет конец исходного текста, и соответствучерез блок И 67 заносится в регистр 68,ющий сигналс дешифратора 29 подается. к счетчику 62 прибавляется + 1, а изв устройство управления 3, "счетчика 63 вычитается + 1,При втором варианте анализа символовПараллельно побайтному считываниюкод сиМвола йз регистра 18 через блок; макрорасширения к содержимому счетчикаЙ 90 поступает в дешифратор 92, где 5" 74 размера объектной программы в модиосуществляется анализ сймволов за один . - фикаторе 11 прибавляется число,равноеразтакт, Второй вариант превосходит первый меру макрорасширения, Сложение этого чиспо быстродействию, но уступает первому ла осуществляется путем прибавления+1 чепо.простоте йзготовлейия. : рез схему И 78 к счетчику 74 при чтеВторая операция, Анализ операторов, ЗО нии или записывании каждого байта макАнациз состояния стекового регистра 35рорасширения,осуществляется дешифратором 36, кото-В случае, если макрорасширение предрый йодает на схемы И, включенные на ставляет собой часть объектной команды,входе байтных шин блока И 156, разре- . то есть в восьмом разряде находится 0",шающие сигналы.: З 5 то к счетчику 74 прибавляется + 2, а изПоокончании первой операции на блок счетчика 75 вычитается + 2, или, что тоуправления имйульсами сдвига 154 пода- же самое, прибавляется и вычитается + 1ется сигнал, последний подает в блок И из второго по старшинству разряда соот-155 и на вторые входы схем И,включен- ветствующих счетчиков 74 и 75. Это обных на входе байтных шин блока И 156, . 40 условлено тем, что размер относительноразрешающие сигналы и в регистре 35 го адреса вместе с номером регистра баосуществляется перемещение информации, . зы равен двум байтам.как описано в таблице. Кроме того, де- При этом, в соответствии с состоянишифратор 36, в соответствии с состояни,ем стекового регистра 35, анализируемоем регистра 35, выдает на вторые выхо 45 го дешифратором 36, содержимое последды относительный адрес соответствующе- него либо не изменяется, либо заноситсяго макрорасширения в таблице макрорао в стек 37, через блок И 40, а затем обширений. Разрешающий импульс, подава нуляется, либо в обнуленный регистр 35емый на шину блока И 46 от блока 154, через блок И 45 заносится информация опозволяет считать относительный адрес с 50 невыполненных операциях очередного уров,выхода дешифратора 36 и прибавить егоня выражения (см. таблицу),к адресу начала таблицы макрорасширений В случаях, если размер объектной пров счетчике 55, Для этого постоянные вре граммы превышает установленное число,мени линий задержки в блоке 56 выбра- то в счетчике 75 появляется нуль, а дены так, чтобы постоянная времени в стар- шифратор 77 выдает сигнал об ошибке55шем разряде была больше времени пере в блок 14.ходного процесса в младших предшеству- Сдвиги информации в стеке 37 осушестюших разрядах. вляются следующим образом: в счетчике67402815 16159 ведется счет сдвигаемой информации фикатора 6 и записывается по адресу вэлемейтов памяти влево или вправо при счетчике 62 модификатора 10 с помощьюкаждом обращении к регистру 37, а в устройства 3 и блоков чтения 16 и зеписчетчике 35 ведется счет открытых уров- си 17 в ОЗУ 1. При этом входной сигналней в формуле, Счет этот ведется следую-. з подается на входы трех счетчиков 24,шим образом. при появлении открывающей 25, 26 или четырех счетчиков 62, 63,скобки формулы к содержимому счетчика 64,65 одновременно.35 прибавляется + 1, при появлении за При записи символов адреса к содеркрывающей скобки иэ содержимого счетчи жимому счетчиков 24, 25, 62, 63, 65ка 3 вычитается + 1. В случае, если со- о прибавляется + 1, а из содержимого счетдержимое счетчика 35 превысило допусти чиков 26, 64 вычитается + 1. При появ мое число или оказалось меньше нуля, де-. дении в счетчике 64 нуля дешифратор 71шифратор 39 подает сигнал об ошибке в подает закрывавший сигнал на вход тригблок 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, и осушествляетратор конца прорамьы илив счетчике 26 ус-.ю переход на запись ключа символьноготановидся нудь, то осуществляется переход к: адрею,шестой операпйи, в противном случае осу- Если размер символьного адреса окашествляется переходк первой операции 1,", . зался больше 8, то очередной импульс эаТретья операций. Запись еймводьного . : писи через блок Й 101 йоступает в блокАйреса, Эта операция сводится к описаниюобработки ошибок, а не на входы счетчиработы модификатора адреса, иэображенно" ков 62-68, так как блок И 100 закрыт.го на фиг, 2 и на фиг. 3.,:-, - , После обработки ошибки в блоке 14 оче 33К йсходномумоменту в счетчике 62: редной импульс записи может вновь прой.йаходитси адрес свободной части ОЗУ 1,ти через блок И 101, Этот процесс повувеличенный на + 1, в данном случае - : ": торяется до тех пор, пока не появитсяадрес полуобьектной программы. В счет:, "операторнйй символ, после чего осушестчиках 63, 64, 68 находится 0, в ре вдяется переход на запись ключа символьгистре 68 находится адрес полуобъектной : ного адреса размером в 8 байт.йрограммы, в регистре 88 находйтся раз-. При работе модификатора 10 в счетчимер полуобъектной программ.:, ,. ке 63 ведется счет объема памяти, заСчетчики 62, 63, 65 установлены найяой полуобъектной программой. При совсдожение + 1, счетчик 64 установлен на падении содержимого счетчика 63 с содервычитание + 1. Триггер 93 включен и жимым регистра 73 дешифратор 70 выдаетнри этом на шину блока И 100 подается соответствующий сигнал о заполнении илиразрешающий сигнал, а на шину блока И переполнении области полуобъектной про101 подается запрещающий сигнал, На ши-, граммы. По окончании третьей операциину блока И 102 подается разрешающий осуществляется переход к первой операсигнал с выхода триггера 103. Триггер ции,93, 103 включаются устройством 3.Напервом такте считывается содер Для использования. только счетчиковжимое регистра 94 число 8 в счетчик 64 64, 65 подается сигнал, закрывающийчерез блок И 97, а восьмой разряд сче 1 триггер 103, который закрывает блок Ичика 65 устанавливается в ф 1". 102.Затем символьный адрес побайтно счи- Четвертая операция. Запись литерала.1дывается по адресу в счетчике 24 моди- В восьмой и седьмой разряды счетчика -65 заносится 1, в остальные шесть разрядов заносится О",Проверяется признак типа литерала исоответственно типу литерала в счетчик64 из какого-либо регистра 94, 95, 96 5заносится соответствующее число 63,16,8, указывающее максимальный размер дляданного типа литерала.Если литерал буквенно-цифровой (максимальный размер его 63), то он эаписывается в полуобъектную программу подсчетчикм 63 аналогично символьному адресу до признака конца литерала.Если литерал цифровой, то управлениепередается в блок перексдировки чисел13, где литерал перекодировывается соответственно типу операции, хранящемуся истековом регистре 35. По окончании первкодировки литерал заносится в ОЗУ 1 подсчетчиком 62 аналогично символьному ад20ресу, но исходная информация беретсяиз блока 13.В случае появления ошибки в записилитерала дешифратор 71 и блок 13 выда 25ют сигнал ошибки в блок 14,По окончании четвертой операции осуществляется переход к первой операции.Пятая операция, Запись метки. При появлении признака (оператора) метки в иоходном тексте осуществляется чтение следующих за признаком символов по адресу вв счетчике 24 модификатора 6 и записьего в восьмибайтный регистр 18, Приэтом размер метки подсчитывается счет 35чиками 64, 65, а входы счетчиков 6263 блокируются,Затем по адресу в счетчике 79 считъ 1 вается очередная метка иэ таблицы метокв регистр 1 9, Это считывание осущестляется следующим образом. Адрес таблицыметок из регистра 84 заносится в счетчик 79, а содержимое счетчиков 80 и 81заносится в регистры 95, 96,45Счетный вход счетчика 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,Указание, через какой именно блок Ипроходит это занесение, не дается, так
СмотретьЗаявка
2424359, 29.11.1976
ИНСТИТУТ ЭЛЕКТРОННЫХ УПРАВЛЯЮЩИХ МАШИН
СЕНТЮРИН ВЯЧЕСЛАВ МИХАЙЛОВИЧ
МПК / Метки
МПК: G06F 17/27
Метки: проблемноориентированного, трансляции, языка
Опубликовано: 15.07.1979
Код ссылки
<a href="https://patents.su/21-674028-sistema-dlya-translyacii-s-problemnoorientirovannogo-yazyka.html" target="_blank" rel="follow" title="База патентов СССР">Система для трансляции с проблемноориентированного языка</a>
Предыдущий патент: Устройство для моделирования систем массового обслуживания
Следующий патент: Устройство для обработки спектрометрической информации
Случайный патент: Устройство для отвинчивания и завинчивания гаек рельсового скрепления