Набор команд Берроуза B6x00-7x00
Эта статья нуждается в дополнительных цитатах для проверки . ( декабрь 2009 г. ) |
Набор команд Burroughs B6x00-7x00 включает набор допустимых операций для Burroughs B6500, [1] B7500 и более поздние крупные системы Burroughs , включая текущие (по состоянию на 2006 год) Unisys системы Clearpath/MCP; он не включает инструкции для других крупных систем Burroughs, включая B5000, B5500, B5700 и B8500. Эти уникальные машины имеют отличительный дизайн и набор инструкций. Каждое слово данных связано с типом, и эффект операции над этим словом может зависеть от типа. Далее машины штабелируются [а] основано на том, что у них не было регистров, адресуемых пользователем.
Обзор
[ редактировать ]Как и следовало ожидать от уникальной архитектуры, используемой в этих системах, они также имеют интересный набор команд . Программы состоят из 8-битных слогов , которые могут быть вызовом имени, вызовом значения или образовывать оператор, длина которого может составлять от одного до двенадцати слогов. Существует менее 200 операторов , каждый из которых умещается в 8-битные слоги. Если не принимать во внимание мощные операторы сканирования, переноса и редактирования строк, базовый набор насчитывает всего около 120 операторов. Если мы удалим операторы, зарезервированные для операционной системы, такие как MVST и HALT, набор операторов, обычно используемых программами пользовательского уровня, станет меньше 100. Слоги Name Call и Value Call содержат пары адресов ; слоги оператора либо не используют адреса, либо используют управляющие слова и дескрипторы в стеке.
Поскольку регистров, адресуемых программистом, нет, то большинство операций по манипулированию регистрами, требуемых в других архитектурах, не нужны, равно как и варианты выполнения операций между парами регистров , поскольку все операции применяются к вершине стека . Это также делает файлы кода очень компактными, поскольку операторы имеют нулевой адрес и не требуют включения адресов регистров или ячеек памяти в поток кода. Частично плотность кода объяснялась перемещением важной информации операндов в другое место, в «теги» каждого слова данных или в таблицы указателей. Многие из операторов являются универсальными или полиморфными в зависимости от типа данных, с которыми осуществляется действие, заданных тегом. Общие коды операций требовали меньше битов кода операции, но делали аппаратное обеспечение более похожим на интерпретатор с меньшими возможностями конвейерной обработки общих случаев.
Например, в наборе команд есть только один оператор ADD. Ему нужно было получить операнд, чтобы определить, было ли это сложение целого числа или сложение с плавающей запятой. Типичные архитектуры требуют нескольких операторов для каждого типа данных, например add.i, add.f, add.d, add.l для целочисленных, плавающих, двойных и длинных типов данных. Архитектура различает только числа одинарной и двойной точности — целые числа — это просто действительные числа с нулевым показателем степени . Если один или оба операнда имеют тег 2, выполняется сложение двойной точности, в противном случае тег 0 указывает на одинарную точность. Таким образом, сам тег является эквивалентом расширения операторов .i, .f, .d и .l. Это также означает, что код и данные никогда не могут не совпадать.
При обработке данных в стеке важны два оператора — вызов значения (VALC) и вызов имени (NAMC). Это двухбитовые операторы: 00 — VALC, а 01 — NAMC. Следующие шесть бит слога, объединенные со следующим слогом, образуют пару адресов. Таким образом, VALC охватывает значения слогов от 0000 до 3FFF, а NAMC от 4000 до 7FFF.
VALC — еще один полиморфный оператор. Если он встречается со словом данных, это слово загружается на вершину стека . Если он достигает IRW, за ним следует, возможно, цепочка IRW, пока не будет найдено слово данных. Если PCW найден, то вводится функция для вычисления значения, и VALC не завершается до тех пор, пока функция не вернет результат.
NAMC просто загружает пару адресов на вершину стека как IRW (с автоматически установленным тегом в 1).
Статические ветки (BRUN, BRFL и BRTR) использовали два дополнительных слога смещения. Таким образом, арифметические операции занимали один слог, операции адресации (NAMC и VALC) — два, переходы — три, а длинные литералы (LT48) — пять. В результате код был намного плотнее (имел лучшую энтропию), чем в традиционной RISC-архитектуре, в которой каждая операция занимает четыре байта. Более высокая плотность кода означала меньшее количество промахов в кэше инструкций и, следовательно, более высокую производительность при работе с крупномасштабным кодом.
В следующих пояснениях к операторам помните, что A и B — это два верхних регистра стека. Расширения двойной точности обеспечиваются регистрами X и Y; таким образом, два верхних операнда двойной точности задаются значениями AX и BY. (В основном AX и BY подразумеваются только A и B.)
Текущий LL | Лексический уровень биты |
Индекс биты |
---|---|---|
0-1 | 13 | 12-0 |
2-3 | 13-12 | 11-0 |
4-7 | 13-11 | 10-0 |
8-15 | 13-10 | 9-0 |
16-31 | 13-9 | 8-0 |
Теги и управляющие слова
[ редактировать ]В B6500 слово содержит 48 бит данных и три бита тега. расширен до трех бит за пределами 48-битного слова в теге. Биты данных — это биты 0–47, а тег — биты 48–50. Бит 48 предназначен только для чтения, поэтому нечетные теги обозначают управляющие слова, которые не могут быть записаны программой пользовательского уровня. Кодовым словам присвоен тег 3. Вот список тегов и их функции:
Ярлык | Слово вид | Описание |
---|---|---|
0 | Данные | Все виды пользовательских и системных данных (текстовые данные и числа одинарной точности) |
2 | Двойной | Данные двойной точности |
4 | СИВ | Индексное слово шага (используется в циклах) |
6 | Неинициализированные данные | |
SCW | Программное управляющее слово (используется для сокращения стека) | |
1 | ИРВ | Косвенное справочное слово |
СИРВ | Фаршированное косвенное справочное слово | |
3 | Код | Кодовое слово программы |
МСКВ | Отметить управляющее слово стека | |
РКВ | Возврат управляющего слова | |
ТОСКВ | Управляющее слово вершины стека | |
СД | Дескриптор сегмента | |
5 | Дескриптор | Дескрипторы блоков данных |
7 | ПКВ | Слово управления программой |
В текущей версии этих машин, Unisys ClearPath, теги расширены до четырехбитных. Уровень микрокода, определяющий четырехбитовые теги, назывался уровнем Гамма.
Слова с четными тегами представляют собой пользовательские данные, которые могут быть изменены пользовательской программой в качестве состояния пользователя. Слова с нечетными тегами создаются и используются непосредственно аппаратным обеспечением и представляют состояние выполнения программы. Поскольку эти слова создаются и используются конкретными инструкциями или оборудованием, точный формат этих слов может меняться в зависимости от аппаратной реализации, и пользовательские программы не требуют перекомпиляции, поскольку один и тот же поток кода будет давать одни и те же результаты, даже если системное слово формат мог измениться.
Слова тега 1 представляют адреса данных в стеке. Обычный IRW просто сохраняет пару адресов с данными в текущем стеке. SIRW ссылается на данные в любом стеке, включая номер стека в адрес.
Слова тега 5 являются дескрипторами, которые более подробно описаны в следующем разделе. Слова тега 5 представляют адреса данных вне стека.
Тег 7 — это управляющее слово программы, которое описывает точку входа в процедуру. Когда операторы нажимают PCW, процедура вводится. Оператор ENTR явно вводит процедуру (подпрограмма, не возвращающая значение). Функции (процедуры, возвращающие значения) неявно вводятся такими операторами, как вызов значения (VALC). Глобальные процедуры хранятся в среде D[2] как SIRW, которые указывают на PCW, хранящийся в словаре сегментов кода в среде D[1]. Среда D[1] не сохраняется в текущем стеке, поскольку на нее могут ссылаться все процессы, использующие этот код. Таким образом, код является реентерабельным и общим.
Тег 3 представляет собой сами кодовые слова, которые не встречаются в стеке. Тег 3 также используется для управляющих слов стека MSCW, RCW, TOSCW.

Регистры отображения
[ редактировать ]Аппаратная оптимизация стека — это предоставление регистров D (или «дисплея»). Это регистры, которые указывают на начало каждого вызываемого кадра стека. Эти регистры обновляются автоматически при входе и выходе из процедур и недоступны никакому программному обеспечению. Имеется 32 регистра D, что ограничивает 32 уровня лексической вложенности.
Рассмотрим, как мы можем получить доступ к глобальной переменной лексического уровня 2 (D[2]) из лексического уровня 5 (D[5]). Предположим, что переменная находится на расстоянии 6 слов от базы лексического уровня 2. Таким образом, она представлена парой адресов (2, 6). Если у нас нет регистров D, нам нужно посмотреть управляющее слово в основании кадра D[5], которое указывает на кадр, содержащий среду D[4]. Затем мы смотрим на управляющее слово в основании этой среды, чтобы найти среду D[3], и продолжаем в том же духе, пока не пройдем все ссылки обратно на требуемый лексический уровень. Это не тот же путь, что и обратный путь через процедуры, которые были вызваны для достижения этой точки. (Архитектура сохраняет и стек данных, и стек вызовов в одной и той же структуре, но для их разделения используются управляющие слова.)
Как видите, просто получить доступ к переменной довольно неэффективно. При использовании регистров D регистр D[2] указывает на базу среды лексического уровня 2, и все, что нам нужно сделать для генерации адреса переменной, — это добавить ее смещение от базы кадра стека к базовому адресу кадра в регистр D. (Существует эффективный оператор поиска по связанному списку LLLU, который может выполнять поиск в стеке описанным выше способом, но подход с использованием регистров D все равно будет быстрее.) С регистрами D доступ к объектам во внешней и глобальной среде столь же эффективен. как доступ к локальным переменным.
D Tag Data — Address couple, Comments register
| 0 | n | (4, 1) The integer n (declared on entry to a block, not a procedure) |-----------------------| | D[4]==>3 | MSCW | (4, 0) The Mark Stack Control Word containing the link to D[3]. |=======================| | 0 | r2 | (3, 5) The real r2 |-----------------------| | 0 | r1 | (3, 4) The real r1 |-----------------------| | 1 | p2 | (3, 3) A SIRW reference to g at (2,6) |-----------------------| | 0 | p1 | (3, 2) The parameter p1 from value of f |-----------------------| | 3 | RCW | (3, 1) A return control word |-----------------------| | D[3]==>3 | MSCW | (3, 0) The Mark Stack Control Word containing the link to D[2]. |=======================| | 1 | a | (2, 7) The array a ======>[ten word memory block] |-----------------------| | 0 | g | (2, 6) The real g |-----------------------| | 0 | f | (2, 5) The real f |-----------------------| | 0 | k | (2, 4) The integer k |-----------------------| | 0 | j | (2, 3) The integer j |-----------------------| | 0 | i | (2, 2) The integer i |-----------------------| | 3 | RCW | (2, 1) A return control word |-----------------------| | D[2]==>3 | MSCW | (2, 0) The Mark Stack Control Word containing the link to the previous stack frame. |=======================| — Stack bottom
Если бы мы вызвали процедуру p как сопрограмму или инструкцию процесса, среда D[3] стала бы отдельным стеком на основе D[3]. Это означает, что асинхронные процессы по-прежнему имеют доступ к среде D[2], как это подразумевается в программном коде ALGOL. Сделав еще один шаг вперед, совершенно другая программа может вызвать код другой программы, создав кадр стека D[3], указывающий на среду D[2] другого процесса поверх своего собственного стека процессов. В одно мгновение все адресное пространство среды выполнения кода изменяется, в результате чего среда D[2] в собственном стеке процессов становится недоступной напрямую, а вместо этого среда D[2] в другом стеке процессов становится напрямую адресуемой. Вот как реализуются вызовы библиотеки. При таком межстековом вызове вызывающий код и вызываемый код могут даже происходить из программ, написанных на разных исходных языках, и компилироваться разными компиляторами.
Среды D[1] и D[0] не встречаются в стеке текущего процесса. Среда D[1] — это словарь сегментов кода, который используется всеми процессами, выполняющими один и тот же код. Среда D[0] представляет объекты, экспортированные операционной системой.
На самом деле кадры стека даже не обязательно должны существовать в стеке процесса. Эта функция ранее использовалась для оптимизации файлового ввода-вывода, FIB (блок информации о файле) был связан с регистрами дисплея в D[1] во время операций ввода-вывода. В начале девяностых эта возможность была реализована как языковая функция в виде СТРУКТУРНЫХ БЛОКОВ и – в сочетании с библиотечной технологией – как СОЕДИНИТЕЛЬНЫЕ БЛОКИ. Возможность связать структуру данных с областью адреса регистра отображения реализовала объектную ориентацию. Таким образом, в B6500 фактически использовалась форма объектной ориентации задолго до того, как этот термин стал использоваться.
В других системах компилятор мог бы построить свою таблицу символов аналогичным образом, но в конечном итоге требования к памяти будут сопоставлены, и машинный код будет написан с использованием плоских адресов памяти 16-битных, 32-битных или даже 64-битных. Эти адреса могут содержать что угодно, поэтому запись на неправильный адрес может что-то повредить. Вместо этого схема адреса, состоящая из двух частей, была реализована аппаратно. На каждом лексическом уровне переменные размещались со смещением вверх от основания стека уровня, обычно занимая одно слово - переменные двойной точности или сложные переменные занимали два. хранились массивы В этой области не , хранился только однословный дескриптор массива. Таким образом, на каждом лексическом уровне общая потребность в памяти была невелика: в крайних случаях десятки, сотни или несколько тысяч, и уж точно не такое количество, требующее 32-бит или более. И действительно, это отразилось в виде инструкции VALC (вызов значения), загружающей операнд в стек. Этот код операции имел длину два бита, а остальные биты байта были объединены со следующим байтом, чтобы получить четырнадцатибитное адресное поле. Выполняемый код должен был находиться на каком-то лексическом уровне, скажем, шестом: это означало, что действительными были только лексические уровни от нуля до шести, и поэтому для указания желаемого лексического уровня требовалось всего три бита. Таким образом, адресная часть операции VALC зарезервировала для этой цели только три бита, а остальная часть была доступна для обращения к объектам на этом и более низких уровнях. Глубоко вложенная процедура (то есть на высоком лексическом уровне) будет иметь меньше битов, доступных для идентификации объектов: для уровня шестнадцать и выше потребуется пять битов, чтобы указать выбор уровней 0–31, таким образом, останется девять битов для идентификации не более первого. 512 сущностей любого лексического уровня. Это намного компактнее, чем обращение к объектам по их буквальному адресу памяти в 32-битном адресном пространстве. Кроме того, данные загружались только кодом операции VALC: коды операций для ADD, MULT и т. д. не выполняли адресацию, работая исключительно с верхними элементами стека.
Гораздо важнее то, что этот метод означал, что многие ошибки, доступные для систем, использующих плоскую адресацию, не могли возникнуть, поскольку они были просто невыразимы даже на уровне машинного кода. Задача не могла повредить память, используемую другой задачей, поскольку у нее не было возможности получить свой адрес. Смещения от указанного D-регистра будут проверяться аппаратным обеспечением на соответствие границе кадра стека: неправильные значения будут перехвачены. Точно так же внутри задачи дескриптор массива содержал информацию о границах массива, поэтому любая операция индексации проверялась аппаратно: иными словами, каждый массив формировал свое собственное адресное пространство. В любом случае маркировка всех слов памяти обеспечивала второй уровень защиты: ошибочное присвоение значения могло перейти только в место хранения данных, а не в место, содержащее указатель или дескриптор массива и т. д., и, конечно, не в то место, где хранятся данные. местоположение, содержащее машинный код.
Арифметические операторы
[ редактировать ]- ДОБАВЛЯТЬ
- Добавьте два верхних операнда стека (B := B + A или BY := BY + AX, если двойная точность)
- тонкий
- Вычесть (Б - А)
- МНОГО
- Умножение с результатом одинарной или двойной точности
- МУЛЬКС
- Расширенное умножение с принудительным результатом двойной точности
- ДЕЛЕНИЕ
- Разделите с реальным результатом
- ИДИВ
- Разделить с целочисленным результатом
- РДИВ
- Вернуть остаток после деления
- ПОЧЕМУ
- Целочисленное усечение
- НТГР
- Целочисленное округление
- НТГД
- Целочисленное округление с результатом двойной точности
- ЧСН
- Изменить знак
- ПРИСОЕДИНИТЬСЯ
- Объедините два одиночных номера, чтобы сформировать двойной
- СПЛТ
- Разделите двойку, чтобы сформировать две одиночки
- ICVD
- Преобразовать входные данные разрушительно – преобразовать число BCD в двоичное (для COBOL).
- ИКВУ
- Обновление преобразования ввода — преобразование числа BCD в двоичное (для COBOL)
- СНГЛ
- Установить округление с одинарной точностью.
- СНГТ
- Установить усеченное значение одинарной точности
- XTND
- Установить двойную точность
- на компакт-диске
- Пакет разрушительный
- ПАКУ
- Обновление пакета
- USND
- Распаковать подписанный деструктивный
- ГУБ
- Распаковать подписанное обновление
- УАБД
- Распакуйте абсолютно разрушительный
- ЗАО
- Распаковать, абсолютное обновление
- SXSN
- Установить внешний знак
- РОФФ
- Чтение и очистка триггера переполнения
- RTFF
- Прочитайте истинный/ложный триггер
Операторы сравнения
[ редактировать ]- МЕНЬШЕ
- Б < А?
- Греция
- Б >= А?
- ГРТР
- Б > А?
- ЛСЭК
- Б <= А?
- РАВНЫЙ
- Б = А?
- ПЕРЕДАЧА
- Б <> А?
- ТАКОЙ ЖЕ
- Имеет ли B ту же битовую комбинацию, что и A, включая тег
Логические операторы
[ редактировать ]- ЗЕМЛЯ
- Логическое поразрядное и всех битов в операндах.
- ИХ
- Логический побитовый или всех битов в операндах
- ЛНОТ
- Логическое побитовое дополнение всех битов операнда.
- LEQV
- Логическая побитовая эквивалентность всех битов операндов
Операторы филиалов и звонков
[ редактировать ]- КОРИЧНЕВЫЙ
- Безусловный переход (смещение задается следующими слогами кода)
- ДБУН
- Динамическая ветвь безусловная (смещение указывается в верхней части стека)
- БРФЛ
- Переход, если последний результат ложный (смещение задается следующими слогами кода)
- ДБФЛ
- Динамическая ветвь, если последний результат ложный (смещение указано в верхней части стека)
- БРТР
- Переход, если последний результат верен (смещение задается следующими слогами кода)
- ДБТР
- Динамическая ветвь, если последний результат верен (смещение указано в верхней части стека)
- ВЫХОД
- Выйти из текущей среды (завершить процесс)
- СТБР
- Шаг и ветвь (используются в циклах; операнд должен быть SIW)
- ЭНТР
- Выполнить вызов процедуры, заданный тегом 7 PCW, в результате чего будет получен RCW по адресу D[n] + 1.
- РЕТЕН
- Вернитесь из текущей процедуры, чтобы поместить заданное RCW в D[n] + 1, и удалите кадр стека.
Битовые и полевые операторы
[ редактировать ]- БСЭТ
- Набор битов (номер бита, указанный в слоге, следующем за инструкцией)
- ДБСТ
- Динамический набор битов (номер бита определяется содержимым B)
- БРСТ
- Сброс бита (номер бита задается слогом, следующим за командой)
- ДБРС
- Динамический сброс битов (номер бита определяется содержимым B)
- ИСОЛ
- Изолировать поле (поле задается по слогам после инструкции)
- НЕПРАВИЛЬНЫЙ
- Динамическая изоляция поля (поле указано в верхней части слов стека)
- ФЛТР
- Перенос поля (поле, заданное по слогам после инструкции)
- ДФТР
- Динамическая передача полей (поле указывается в верхней части слов стека)
- ИНСР
- Вставка поля (поле задается по слогам после инструкции)
- ВНУТРИ
- Вставка динамического поля (поле указывается в верхней части слов стека)
- CBON
- Подсчитайте двоичные единицы в вершине слова стека (A или AX).
- СКЛФ
- Масштабировать влево
- ДСЛФ
- Динамический масштаб слева
- СКРТ
- Масштабировать вправо
- ДСРТ
- Динамический масштаб справа
- СКРС
- Масштабировать вправо, сохранить
- ДСРС
- Динамическое масштабирование справа, сохранение
- ГКРЧ
- Масштабировать правый финал
- ДСРФ
- Динамическая шкала справа финал
- ГКРР
- Масштабировать вправо
- ДСРР
- Динамический масштаб справа
Литеральные операторы
[ редактировать ]- ЛТ48
- Загрузите следующее кодовое слово на вершину стека
- ЛТ16
- Установите верхнюю часть стека на следующие 16 бит в потоке кода.
- ЛТ8
- Установить вершину стека на следующий слог кода
- НОЛЬ
- Ярлык для LT48 0
- ОДИН
- Ярлык для LT48 1
Операторы дескриптора
[ редактировать ]- ИНДЕКС
- Индекс создает указатель (дескриптор копирования) из базового дескриптора (MOM).
- НХЛН
- Индекс и имя загрузки (в результате получается индексированный дескриптор)
- НХЛВ
- Индекс и значение загрузки (в результате чего получается значение данных)
- ОЦЕНКА
- Оценить дескриптор (следовать по цепочке адресов, пока не будет найдено слово данных или другой дескриптор)
Операторы стека
[ редактировать ]- ТОЛКАТЬ
- Опустить регистр стека
- ДЛЕТ
- Вытащить вершину стека
- ОБМЕН
- Обменять два верхних слова стека
- РСУП
- Повернуть стопку вверх (три верхних слова)
- РСДН
- Повернуть стопку вниз (три верхних слова)
- дубликат
- Дублировать вершину стека
- МКСТ
- Пометить стек (построить новый кадр стека, в результате чего MSCW окажется сверху,
— затем NAMC для загрузки PCW, затем при необходимости вводятся параметры, затем ENTR)
- ИМКС
- Вставьте MSCW в регистр B.
- ВАЛК
- Извлеките значение в стек, как описано выше.
- НАМК
- Поместите пару адресов (адрес стека IRW) в стек, как описано выше.
- СТФФ
- Преобразуйте IRW, помещенный NAMC, в SIRW, который ссылается на данные в другом стеке.
- МВСТ
- Переместить в стек (переключение процессов выполняется только в одном месте MCP)
Операторы магазинов
[ редактировать ]- ШОК
- Деструктивное сохранение (если целевое слово имеет нечетный тег, выдается прерывание защиты памяти,
— сохранить значение в регистре B в памяти, адресованной регистром A. — Удалить значение из стека.
- СТОН
- Неразрушающее сохранение (то же, что и STOD, но значение не удаляется – удобно для выражений F := G := H := J).
- ОВРД
- Деструктивная перезапись, STOD игнорирует бит только для чтения (только для использования в MCP)
- ОВРН
- Неразрушающая перезапись, STON игнорирует бит только для чтения (только для использования в MCP)
Операторы загрузки
[ редактировать ]Инструкция Load может сработать по косвенному адресу или, что еще хуже, по замаскированному вызову по имени процедуры обработки вызова .
- НАГРУЗКА
- Загрузите значение, заданное адресом (слово тега 5 или тега 1), на вершину стека.
— При необходимости следуйте цепочке адресов.
- МНОГО
- Загрузить прозрачно – загрузить слово, на которое ссылается адрес, в вершину стека.
Операторы трансфера
[ редактировать ]Обычно они использовались для передачи строк до тех пор, пока в исходной строке не был обнаружен определенный символ. Все эти операторы защищены от переполнения буфера за счет ограничений в дескрипторах.
- TWFD
- Передача пока ложная, разрушительная (забыть указатель)
- РАСТИ
- Передача пока ложна, обновите (оставьте указатель в конце передачи для дальнейших передач)
- ТВТД
- Передача хоть и верна, но деструктивна
- ТВТУ
- Перенос пока верен, обновите
- ТВСД
- Слова-переносы, разрушительные
- ТВСУ
- Перенести слова, обновить
- ДВА
- Перенести слова, перезаписать разрушительные
- ДЫРА
- Перенос слов, перезапись обновления
- ТРНС
- Трансляция – передача исходного буфера в пункт назначения с преобразованием символов, как указано в таблице перевода.
- TLSD
- Передача, хотя и меньшая, разрушительна
- ТЛСУ
- Переноси пока меньше, обнови
- ТГЭД
- Передача, хотя она больше или равна, разрушительна
- ТГЭУ
- Передача пока больше или равна, обновить
- ТГТД
- Перенос, хотя и больший, разрушительный
- ТГТУ
- Перенос пока больше, обновление
- ТЛЭД
- Передача, пока меньше или равна, разрушительна
- ТЛЕУ
- Перенос пока меньше или равен, обновить
- ТЕКД
- Перенос, пока равный, разрушительный
- ТЕКУ
- Перенос при равенстве, обновление
- ТНЭД
- Трансфер, хотя и не равный, разрушительный
- TNEU
- Передача пока не равна, обновить
- ЧАС
- Передача безусловная, разрушительная
- ГОТОВИТЬ
- Безусловная передача, обновление
Операторы сканирования
[ редактировать ]Они использовались для сканирования строк, полезных при написании компиляторов . Все эти операторы защищены от переполнения буфера за счет ограничений в дескрипторах.
- ЮФО
- Сканировать пока ложно, разрушительно
- СИСО
- Изолировать струну
- СВТД
- Сканируйте, пока это правда, разрушительно
- ЮВТУ
- Сканировать, пока это правда, обновить
- СЛСД
- Сканируйте, пока меньше, разрушительно
- СЛСУ
- Сканируйте пока меньше, обновляйте
- СГЭД
- Сканирование, пока оно больше или равно, разрушительно
- СГЭУ
- Сканировать, пока больше или равно, обновить
- СГТД
- Сканирование в то время как большее, разрушительное
- СГТУ
- Сканируйте пока лучше, обновите
- САНКИ
- Сканирование, пока меньше или равно, разрушительно
- СПАТЬ
- Сканировать пока меньше или равно, обновить
- ПОСЛЕДОВАТЕЛЬНОСТЬ
- Сканируйте, пока равны, разрушительны
- СЛЕДУЮЩИЙ
- Сканировать пока равно, обновлять
- SNED
- Сканирование, пока не равное, разрушительное
- СНО
- Сканировать, пока не равно, обновить
- CLSD
- Меньше сравнивайте характеры, разрушительно
- CLSU
- Меньше сравнивайте персонажей, обновляйте
- ЦГЭД
- Сравнивать символы, большие или равные, разрушительные
- ЦГЭУ
- Сравнить символы, большие или равные, обновить
- КГТД
- Сравните характер более великий, разрушительный
- КГТУ
- Сравнить персонаж больше, обновить
- КЛЕД
- Сравнивать символы меньше или равно, разрушительно
- ЗАЦЕПКА
- Сравнить меньшие или равные символы, обновить
- CEQD
- Сравните характер равный, разрушительный
- CEQU
- Сравнить символы равны, обновить
- КНЕД
- Сравнивать характеры не равные, разрушительные
- СОЗДАВАТЬ
- Сравнить неравные символы, обновить
Система
[ редактировать ]- СВЯТОЙ
- Установить интервальный таймер
- ЭКСИ
- Включить внешние прерывания
- DEX
- Отключить внешние прерывания
- СКНИ
- Сканировать — инициировать чтение ввода-вывода, это менялось на разных архитектурах.
- СКНО
- Scan out – инициировать запись ввода-вывода, это менялось на разных архитектурах.
- СТАГ
- Установить тег (не разрешено в процессах уровня пользователя)
- РТАГ
- Читать тег
- ИРВЛ
- Аппаратный псевдооператор
- СПРР
- Установить регистр процессора (сильно зависит от реализации, используется только на более низких уровнях MCP)
- РПРР
- Чтение регистра процессора (сильно зависит от реализации, используется только на более низких уровнях MCP)
- ПДКВ
- Сделать PCW
- ОСТАНОВКА
- Остановить процессор (запрошен оператором или возникла неустранимая ситуация)
Другой
[ редактировать ]- РАЗЛИЧНЫЙ
- Переход к расширенным (переменные инструкции, которые встречаются реже)
- OCRX
- Индекс «происходит» создает индексное слово «происходит», используемое в циклах.
- ЛЛЛУ
- Поиск по связанному списку. Следуйте по цепочке связанных слов до тех пор, пока не будет выполнено определенное условие.
- СРЧ
- Поиск равенства по маске. Аналогичен LLLU, но проверка маски в проверенных словах на наличие равного значения.
- ВЫ ДЕЛАЕТЕ
- Таблица введите редактирование разрушительное
- ТЭУ
- Таблица введите редактирование, обновление
- EXSD
- Выполнить одиночное микроразрушение
- ЭКСГУ
- Выполнить одно микрообновление
- Опыт
- Выполнение одного микрообновления с одним указателем
- НЕА
- Нет операции
- НВЛД
- Неверный оператор (шестнадцатеричный код FF)
- Пользовательские операторы
- неназначенные операторы могут вызывать прерывания в операционной системе, чтобы можно было написать алгоритмы, обеспечивающие требуемую функциональность.
Редактировать операторы
[ редактировать ]Это были специальные операторы для сложных манипуляций со строками, особенно для бизнес-приложений.
- МИНУТЫ
- Переместить с помощью вставки – вставить символы в строку
- МФЛТ
- Перемещение с плавающей запятой
- SFSC
- Пропустить исходный персонаж вперед
- СРСК
- Пропустить символы обратного источника
- РСТФ
- Сбросить поплавок
- ЕНДФ
- Конечный поплавок
- MVNU
- Переместить числовое безусловное
- МЦПЧ
- Перемещение персонажей
- ИНОП
- Вставить перфоратор
- ОБЩИЙ
- Вставить знак
- СФДК
- Пропустить символ назначения вперед
- СРДЦ
- Пропустить символы обратного назначения
- ИНСУ
- Вставить безусловную
- ИНСК
- Вставить условное
- КОНЕЦ
- Завершить редактирование
Примечания
[ редактировать ]- ^ Лексический уровень слога может относиться либо к отмеченной точке в стеке текущей задачи, либо к отмеченной точке в стеке родительской задачи. Термин «стек» может относиться к множеству связанных стеков, известных под общим названием « стек Сагуаро» .
Ссылки
[ редактировать ]- ^ Burroughs (сентябрь 1969 г.), Справочное руководство по системе обработки информации Burroughs B6500 (PDF) , 1043676