ИЗВЕСТИЯ
ТОМСКОГО ОРДЕНА ТРУДОВОГО КРАСНОГО ЗНАМЕНИ ПОЛИТЕХНИЧЕСКОГО
ИНСТИТУТА имени С. М. КИРОВА
Том 168
1969
УНИВЕРСАЛЬНАЯ ИНТЕРПРЕТИРУЮЩАЯ СИСТЕМА
(УИС)
Н. С. ГОЛОСОВ, О. к. ГОРДЕЕВ
(Представлена научным семинаром вычислительной лаборатории ТПИ)
Несмотря на сравнительно небольшую оперативную память (1777 ячеек), ЭВМ «Минск-1» благодаря устойчивой работе может решать довольно сложные инженерные задачи. По мере усложнения решаемых задач программист вынужден отказаться от программирования методом фиксированной запятой и перейти на программирование методом плавающей запятой. Однако это приводит к сильному увеличению объема оперативной памяти, занятого программой по отношению к количеству выполняемых операций, так как увеличивается количество служебных действий: посылок, обращений и др. Это обстоятельство приводит к необходимости расширения кодов машины до псевдокодов, т. е. действий, которые машина не может правильно выполнить без специальной программы, интерпретирующей псевдокоды в кодах машины. Это позволяет при некотором увеличении машинного времени значительно сократить объем программы в памяти и расширить класс задач, решаемых на ЭВЦ «Минск-1».
В печати было опубликовано несколько интерпретирующих систем [1, 2, 3], однако, несмотря на несомненный интерес, они обладают, на наш взгляд, рядом существенных недостатков. Во-первых, набор ПК явно ограничен и не решает полностью вопрос автоматизации программирования методом плавающей запятой. Во-вторых, например, PIC, предложенную в [1], включив в интерпретацию, нельзя программно отключить в том месте, где интерпретация совершенно бессмысленна (например, в некоторых СП), что приводит к неоправданной потере машинного времени. И, наконец, в-третьих: организация интерпретации ПК занимает больше команд, чем это нужно. Кроме того, наличие в подпрограмме сложения двух операций умножения приводит к увеличению времени ее работы примерно на одну треть, а в делении в два раза. При создании новой интерпретирующей системы были учтены и, по возможности, устранены эти недостатки.
Арифметические псевдокоманды, организация работы стандартных подпрограмм
Универсальная интерпретирующая система интерпретирует только набор псевдокодов, поэтому все коды машины, находящиеся среди ПК, исполняются так, как они исполняются в машине, и, кроме того, результат действия находится в ячейке 0023. Признаком ПК является
2. Заказ 2258.
индекс 2000, стоящий в любом адресе, если на этот псевдокод нет дополнительных оговорок.
Числа, с которыми работает УИС, представлены в двух следующих друг за другом ячейках Л и Л + 1, порядок и мантисса. УИС интерпретирует следующие арифметические действия:
+ 10 2000+^1 А2 Л2 + Ль
+ 11 2000 + Аг А2 А2 — Аи
+ 12 2000 +Л] А2 А2 : Аи
+ 13 2000 + Ах А2 А2ХА\.
По этим псевдокомандам происходит следующее. Содержимое /4Ь .4! +1 посылается в 0020, 0021; Л2, Л2+1 посылается в 0022, 0023, производится предписанное действие, результат действия получается в рабочих ячейках 0022, 0023, кроме того, результат посылается в ячейку А2 и А2 + 1. Так как результат действия получается всегда в ячейках 0022, 0023, назовем их псевдосумматором (ПС). Арифметические операции можно производить в виде модификаций действий с ПС. По индексу 4000 в Ах действие произойдет не с содержимым А2, 1а с содержимым ПС, и результат посылается в ячейку А2. По индексу 4000 в А2 результат действия остается на ПС. Возможны также индексы одновременно в обоих адресах.
Стандартные подпрограммы (СП) без интерпретации работают с автоматическим отключением и включением УИС. Это достигается составлением таблицы характеристик (ТХ) и выходом после окончания работы СП на определенную ячейку (0102) УИС. ТХ составляется следующим образом: ячейкам, начиная с 0325, присвоены номера ПК 16, 17 и т. д. до 77. Если в ячейку, например, 327, поставить команду безусловной передачи управления на начало СП, то тем самым мы вводим 'арифметический ПК 20 2000 +Л Иг. По этому ПК, встреченному в основной программе, произведутся все действия с адресами, предписанные для адресов арифметических ПК, а арифметическое действие заменится действием указанного СП. Составление строк ТХ может легко осуществлять несколько измененная РП-1 [1].
Псевдокоды 14, 15 означают перевод чисел соответственно из десятичной системы счисления в двоичную и из двоичной в десятичную с печатью по СП [3]. В УИС отведено место, на котором в начале работы размещается СП 10 = 2. При работе программы в случае отсутствия в наличии нужной (14 или 15) СП она считывается из МЗУ с указанной зоны (см. приложение 1). Обращение к СП или операторам, составленным в принятых ПК, может осуществляться также с помощью логического ПК+ 03 2000 + Л{А2 (см. ниже).
Логические псевдокоманды и организация циклических программ с переадресацией
Логические псевдокоманды исполняют ряд стандартных действии, которые часто встречаются в программах и введены для-удобства программирования, сокращения объема памяти под основную программу и ускорения ее работы. Интерпретируются семь логических псевдокоманд и ПК пересылки числа.
+ 01 2000 + ЛИ2 — отключение УИС с подготовкой включения. По этому ПК УИС заканчивает работу, настраивается на включение с ячейки Л2 и передает управление в ячейку А\. Если после работы кодов последует передача управления в ячейку 0112 (начало работы УИС), УИС начнет выполнять команду из ячейки А2.
+ 02 2000 + А Из. Условный переход по содержимому псевдосумматора. Если знак числа ПС положительный, переход к выполнению команды в ячейке А\\ отрицательный — в Л2, число равно нулю —выполнять следующую за этой команду.
+ 04 2ООО + Л1Л2: аналогичный условный переход, но только по знаку ПС. Исполнение УИС этих двух ПК отличается от исполнения кодов 54 АхА2, 34 АгА2 по знаку тем, что исполнение ПК не ведет к отключению УИС, хотя оба типа переходов по ПС.
+ 03 2000+4 И2— безусловный переход к выполнению команды в с засылкой ПК возврата в ячейку Л2. УИС перед началом исполнения команды в ячейке Ах засылает в ячейку А2 псевдокод+!03 Ах + 1, 2000, где А — адрес выполняемой команды. Эта команда используется при обращении к операторам, составленным в ПК из разных мест программы.
Следующие три логические псевдокоманды служат для организации циклических программ. В УИС отведены две рабочие ячейки, одна из которых хранит шаг цикла (назовем ее Я/), другая счетчик цикла (назовем ее С).
+ 00 2000 + А\А2 — ПК занесения шага цикла, равного Ль и счетчика цикла, равного Л2.
+ 05 2ООО + Л1Л2 — ПК свертывания предыдущего шага и счетчика цикла в ПК + 00 2000 + Ш, С, посылка его в ячейку Л2, занесение нового шага, равного Ль и счетчика, равного нулю.
+ 06 2000 +Л1Л2 — ПК условного перехода по счетчику циклов осуществляет добавление шага к счетчику и переход к выполнению команды в ячейке Ль если С Л2, или к следующей за данной, если С>Л2.
С помощью этих псевдокодов легко организовать любые сложные циклические программы. Очевидно, для того, чтобы участок программы проработал п-раз, необходимо у ПК 06 сделать Л2 = (п— 1) Ш (схема организации простого цикла и цикла в 'цикле приведена в приложении 2).
Из схемы организации циклических программ видно, что каждый участок циклической программы выполняется с определенным значением Ш и С. Это обстоятельство позволяет ввести автоматическую переадресацию Я/С, т. е. формирование исполнительных адресов в зависимости от содержимого С. Признак минус у ПК интерпретируется как ПК с переадресацией, индекс 2000 у такого ПК указывает на адрес, подлежащий переадресации. Переадресация производится по правилу: к адресу с индексом перед исполнением в рабочей ячейке УИС прибавляется содержимое С. Таким образом, в первом цикле, когда С = 0, все ПК с переадресацией выполняются с теми адресами, которые записаны в программе. Во втором цикле содержимое С = Ш, поэтому все переадресуемые адреса сдвигаются на шаг цикла и т. д.
Таким приемом можно переадресовать оба адреса всех ПК за исключением вторых адресов ПК, организующих цикл, где индекс 2000 никогда не ставится.
+ 07 2000 + Л]Л2 — ПК посылки содержимого А\ в ячейку Л2.
Подключение к УИС осуществляется при помощи двух команд:
Л 10 Л 0010,
Л + 1 24 0112 0112. '
Описанная УИС, на н'аш взгляд, позволяет значительно упростить и ускорить процесс программирования большинства задач.
Приложение 1
Шапка 2-10
нужной СП (14 Адрес 1 КОП А л.
При отсутствии
или 15) УИС считывает в МОЗУ со-
ответствующую шапку в ячейки 0020 44 0031 0001
с 20-37, которая, в свою очередь, вы- 1 44 0230 0271
зывает СП, суммирует ее и, при сов- 2 05 0000 0206
падении сумм, продолжает работу. 3 05 0037 0024
4 -00 0230 0206
5 01 ООП 0024
6 -31 0036 0000
П р и л о ж е н и е 2 7 54 0024 0024
0030 -11 0035 0206
1 54 0020 0020
А + 0 + 05 2002 0000 2 05 0324 0323
А + 1 -- 15 7500 4000 3 05 0316 0324
А + 2 + 06 2 + А- ■И оою 4 24 0134 0000
5 24 7220 4000
6 -00 0272 0206
Простой цикл с переадресацией ра- 7 -00 0230 0206
ботает пять раз с оператором перево- 73 7546 4435л: 1
да из 2-10. После выхода из цикла
С=0012 Д/—0002. Подпрограмма 2-10
0230 05 0000 0022
05 2004 Л3 1 05 0020 0024
Л0 ...... 2 54 0243 0233
3 31 0262 0000
05 2002 л2 4 54 0251 0237
Л, ...... 5 51 0266 0021
6 54 0251 0237
06 2 А[ 0014 7 03 0264 0021
А2 00 0000 0000 0240 01 0263 0024
1 00 0263 0022
2 34 0246 0246
00 2 -Мо 0010 3 03 0266 0021
4 00 0262 0024
Л3 00 0000 0000 01
5 0263 0022
Схема организации циклов в цикле 6 15 0021 0020
отличается тем, что каждый внутреи- 7 00 0024 0020
иии цикл запоминает Сия/ внешнего 0250
34 0231 0231
цикла в ячейке, стоящей после его 1
команды условного перехода по С. —07 0020 0021
Выходя из внутреннего цикла, УИС 2 15 0265 0023
восстанавливает содержимое С и Ш 3 03 0264 0021
внешнего цикла, выполнив команду, 4 26 0024 0020
заготовленную //д «ио».
5 —26 0023 0023
6 01 0020 0021
7 -07 1 0263 0024
Продолжение
Продолжение
Адрес + КОП А Л
0260 51 0263 0021
1 34 0253 0267
2 -00 0000 0003
3 -00 0000 0004
4 50 0000 0000
5 —74 0000 0000
6 63 1463 1463
7 —46 0000 0022
0270 —46 0000 0023
1 34 0102 0102
Шайка 10-2
0020 44 0021 0001
1 44 0230 0271
2 05 0000 0206
3 05 0037 0024
4 —00 0230 0206
5 01 ООП 0024
6 -31 0036 0000
7 54 0024 0024
0030 — 11 0035 0206
1 54 0020 0020
2 05 0323 0324
3 05 0316 0323
4 24 0134 0000
5 06 6114 3443
6 —00 0272 0206
7 -00 0230 0206
55 6431 4100/^
Подпрограмма 10-2
0230 15 0257 0022
1 05 0260 0264
2 16 0021 0264
3 32 0023 0000
4 20 0022 0022
5 03 0257 0023
6 —07 0261 0264
7 54 0001 0232
0240 15 0022 0022
1 05 0020 0000
2 54 0244 0250
3 34 0102 0102
Адрес
КОП
А,
А,
4 03
5 00
6 11
7 24
0250 03
1 01
2 10
3 —26
4 15
5 00
6 34
7 50
0260 —74
1 —00
2 —00
3 63
4 00
5 00
6 00
7 00
0270 00
1 34
0257 0261 0261 0254
0263 0261 0262 0000 0023
0264 0241 0000 0000 0000 0000 1463 0000 0000 0000 0000 0000 0102
0023 0020 0022 0264 0023 0020 0022 0264 0022 0022 0241 0000 0000 0004 0003 1463 0000 0000 0000 0000 0000 0102
Программа УИС и константы
0001 77 7777 7777
2 40 0000 0000
3 -00 0000 0000
4 20 0000 0000
5 00 7777 0000
6 00 0000 7777
7 77 0000 0000
0010 -02 7775 7672
1 00 0001 0000
2 00 0000 0001
3 00 0001 0001
4 00 0002 0000
5 00 0000 0002
6 00 0002 0002
7 14 0001 7761
0040 -01 0003 0021
1 16 0021 0023
2 54 0046 0046
3 51 0023 0000
4 54 0045 0067 6 00 0000 0000
5 24 0050 0022 7 24 Olli 0023
6 01 0022 0020 0120 71 ; 0226 0000
7 34 0050 0054 1 54 0124 0125
0050 00 0020 0022 2 11 0302 0116
1 05 0021 0107 3 24 0127 0116
2 05 0023 0021 4 Ol 0302 0116
3 05 0107 0023 5 -17 0145 0302
4 51 0070 0020 6 21 0116 0116
5 34 0067 0056 7 16 0007 0116
6 — 16 0003 0020 0130 21 0272 0110
7 21 0012 0020 1 54 0134 0150
0060 —07 0020 0021 2 -51 0273 0116
1 -17 0146 0023 3 24 0106 0107
2 30 0021 0000 4 16 0005 0116
3 25 0000 0020 5 -26 0274 0137
4 24 0065 0023 6 20 0013 0140
5 10 0012 0022 7 00 0000 0000
6 20 0020 0022 0140 00 0000 0000
7 34 0102 0102 1 16 0223 0116
0070 00 0000 0036 2 54 0150 0000
1 II 0020 0022 3 -Ol 0223 0116
2 20 0012 0020 4 36 0006 0003
3 — 17 0146 0023 5 —37 0167 0014
4 32 0021 0000 6 -36 0301 0001
5 34 0100 0100 7 24 0136 0137
6 . 00 0022 0020 0150 — 17 0145 0110
7 13 0021 0023 1 20 0277 0152
0100 25 0000 0022 2 00 0000 0000
i 00 0020 0022 3 16 0006 0116
2 16 0222 0116 4 —37 0167 0000
о О 54 Olli 0000 5 —26 0300 0112
4 16 0006 0116 6 —51 0227 0116
5 —26 0224 0107 7 24 0116 0116
6 20 0013 0110 0160 - 17 0144 0110
7 00 0000 0000 1 -26 0221 0110
0110 00 0000 0000 2 -i6 0023 0000
1 00 ООП 0112 3 24 0110 0000
2 05 0000 0116 4 16 0006 0116
3 36 0225 0000 5 —26 0304 0170
4 54 0127 0120 6 16 0005 0112
5 — 16 0023 0000 7 30 0305 0014
0170 00 0000 0000 2 54 0244 0250
0167 3 34 0102 0102
1 —07 0116 4 03 0257 0023
2 1 6 0005 0116 5 00 0261 0020
3 —36 0300 0000 6 11 0261 0022
4 24
о 10
6 —21
7 16
0200 —37
1 31
2 34
3 16
4 —26
5 — 17
6 00
7 16
0210 24
1 16
2 —27
3 16
4 24
5 -01
6 44
7 44
0220 24
1 04
2 00
3 00
4 05
5 —00
6 00
7 35
0230 15
1 05
2 16
3 32
4 20
5 03
6 - 07
с 54
0240 15
1 05
0112 0112
0303 0302
0226 0302
0006 0116
0167 0000
0302 0000
0172 0111
0006 0116
0276 0206
0145 0302
0000 0000
0000 0302
0213 0302
0006 0116
0167 0302
0005 0116
0111 0303
0275 0216
0020 0001
0020 0037
0020 0000
0172 0171
0000 4000
4000 0000
0022 0000
2000 2000
2000 0000
0000 0000
0257 0022
0260 0264
0021 0264
0023 . 0000
0022 0022
0257 0023
0261 0264
0001 0232
0022 0022
0020 0000
7 24
0250 03
1 01
2 10
3 -26
4 15
5 00
6 34
7 50
0260 —74
1 —00
2 —00
3 63
4 00
5 00
6 00
7 00
0270 00
1 34
2 07
3 02
4 05
5 00
6 —26
7 24
0300 05
1 05
2 00
3 00
4 24
5 03
6 54
7 24
0310 24
1 24
2 24
3 24
4 24
5 24
6 24
7 24
0320 24
1 24
2 24
3 24
4 24
0254 0264
0263 0023
0261 0020
0262 0022
0000 0264
0023 0022
0264 0022
0241 0241
0000 0000
0000 0000
0000 0004
0000 0003
1463 1463
0000 0000
0000 0000
0000 0000
0000 0000
0000 0000
0102 0102
0000 0000
0000 0000
0000 0 20
0010 0000
0303 0000
0316 0000
0000 0116
0000 0022
0000 0000
0000 0000
0172 0000
0001 2000
0134 0150
0211 0000
0153 0000
0160 0000
0164 0000
0160 0000
0203 0000
0175 0000
0230 0000
0041 0000
0040 0000
0071 0000
0076 0000
0230 0000
0215 0000
ЛИТЕРАТУРА
1. Н. И. Лозинский, А. Г. М а куш к и н, В. Я. Розенберг, В. Р. Эр г л и Справочник программиста. Т. 2, Л., 1964.
2. И. Илзиня. Программирование для двухадресных ЦВМ, Рига, 1962.
3. Библиотека стандартных программ для ЭВМ «Минск-1». ЭНИМС, М., 1963.