Набор инструкций Burroughs B6x00-7x00 - Burroughs B6x00-7x00 instruction set
Эта статья поднимает множество проблем. Пожалуйста помоги Улучши это или обсудите эти вопросы на страница обсуждения. (Узнайте, как и когда удалить эти сообщения-шаблоны) (Узнайте, как и когда удалить этот шаблон сообщения)
|
В Набор инструкций Burroughs B6x00-7x00 включает набор допустимых операций для Burroughs B6500,[1] B7500 и выше Большие системы Берроуза, в том числе текущие (по состоянию на 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 |
Арифметические операторы
- ДОБАВИТЬ
- Добавьте два верхних операнда стека (B: = B + A или BY: = BY + AX, если двойная точность)
- СУБТ
- Вычесть (B - A)
- MULT
- Умножение с результатом с одинарной или двойной точностью
- MULX
- Расширенное умножение с принудительным результатом двойной точности
- DIVD
- Разделить с реальным результатом
- IDIV
- Разделить на целочисленный результат
- RDIV
- Вернуть остаток после деления
- NTIA
- Целочисленное усеченное
- NTGR
- Целочисленное округление
- NTGD
- Целочисленное округление с результатом двойной точности
- ЧСН
- Изменить знак
- ПРИСОЕДИНИТЬСЯ
- Соедините два одиночных игры, чтобы сформировать двойной
- SPLT
- Разделите дабл на два сингла
- ICVD
- Input convert destructive - преобразование числа BCD в двоичное (для COBOL)
- ICVU
- Обновление преобразования ввода - преобразование числа BCD в двоичное (для COBOL)
- SNGL
- Задано округление до одинарной точности
- СНГТ
- Установить усеченное значение одинарной точности
- XTND
- Установить двойную точность
- PACD
- Пакет разрушительный
- PACU
- Обновление пакета
- USND
- Распаковать подписанный деструктивный
- УГНУ
- Распаковать подписанное обновление
- UABD
- Распаковать абсолютное разрушительное
- UABU
- Распаковать, абсолютное обновление
- SXSN
- Установить внешний знак
- РОФФ
- Чтение и очистка триггера переполнения
- RTFF
- Чтение истинного / ложного триггера
Операторы сравнения
Логические операторы
- ЗЕМЕЛЬНЫЕ УЧАСТКИ
- Логическое побитовое и всех битов в операндах
- LOR
- Логическое побитовое или всех битов в операндах
- LNOT
- Логическое побитовое дополнение всех битов в операнде
- LEQV
- Логическая побитовая эквивалентность всех битов в операндах
Операторы филиалов и звонков
- BRUN
- Безусловный переход (смещение задается следующими слогами кода)
- DBUN
- Безусловный динамический переход (смещение указано в верхней части стека)
- BRFL
- Переходить, если последний результат ложен (смещение задается следующими слогами кода)
- DBFL
- Динамическая ветвь, если последний результат ложен (смещение указано в верхней части стека)
- BRTR
- Перейти, если последний результат верен (смещение задается следующими слогами кода)
- DBTR
- Динамическая ветвь, если последний результат верен (смещение указано в верхней части стека)
- ВЫХОД
- Выйти из текущей среды (завершить процесс)
- STBR
- Шаг и ветвление (используются в циклах; операнд должен быть SIW)
- ENTR
- Выполнить вызов процедуры, заданный тегом 7 PCW, в результате чего RCW будет в D [n] + 1
- RETN
- Вернитесь из текущей подпрограммы на место, указанное RCW в D [n] + 1, и удалите кадр стека.
Битовые и полевые операторы
- BSET
- Битовый набор (номер битов задается слогом после инструкции)
- DBST
- Динамический набор битов (номер битов определяется содержимым B)
- BRST
- Сброс бита (номер бита задается слогом после инструкции)
- DBRS
- Динамический сброс бита (номер бита определяется содержимым B)
- ИЗОЛ
- Выделение поля (поле указывается в слогах после инструкции)
- DISO
- Изоляция динамического поля (поле, указанное в верхней части слов стека)
- FLTR
- Перенос поля (поле приводится в слогах после инструкции)
- DFTR
- Передача динамического поля (поле указано в верхней части слов стека)
- INSR
- Вставка поля (поле указывается в слогах после инструкции)
- DINS
- Вставка динамического поля (поле указывается в верхней части слов стека)
- CBON
- Подсчитайте двоичные единицы в верхней части слова стека (A или AX)
- SCLF
- Масштаб слева
- DSLF
- Динамический масштаб слева
- SCRT
- Масштаб вправо
- DSRT
- Динамический масштаб справа
- SCRS
- Масштабировать правильно сохранить
- DSRS
- Динамическое масштабирование справа сохранить
- SCRF
- Масштаб вправо финал
- DSRF
- Динамический масштаб справа финал
- SCRR
- Масштаб прямо круглый
- DSRR
- Динамический масштаб справа
Литеральные операторы
- LT48
- Загрузить следующее кодовое слово на вершину стека
- LT16
- Установить верх стека на следующие 16 бит в потоке кода
- LT8
- Установить верх стека на следующий слог кода
- НУЛЬ
- Ярлык для LT48 0
- ОДИН
- Ярлык для LT48 1
Операторы дескриптора
- INDX
- Индекс создает указатель (дескриптор копирования) из базового (MOM) дескриптора
- NXLN
- Индекс и имя загрузки (в результате получается индексированный дескриптор)
- NXLV
- Индекс и значение загрузки (в результате получается значение данных)
- EVAL
- Оцените дескриптор (следуйте цепочке адресов, пока не будет найдено слово данных или другой дескриптор)
Операторы стека
- ТОЛКАТЬ
- Сдвинуть регистр стека вниз
- DLET
- Поднять верх стека
- ОБМЕН
- Обменять два верхних слова стека
- RSUP
- Повернуть стопку вверх (три верхних слова)
- RSDN
- Повернуть стопку вниз (три верхних слова)
- ДУПЛ
- Повторяющаяся вершина стопки
- MKST
- Отметить стек (создать новый кадр стека, в результате чего MSCW будет наверху,
- затем NAMC для загрузки PCW, затем параметры нажимаются по мере необходимости, затем ENTR)
- ИМКС
- Вставьте MSCW в регистр B.
- VALC
- Получить значение в стек, как описано выше
- NAMC
- Поместите пару адресов (адрес стека IRW) в стек, как описано выше.
- STFF
- Преобразуйте IRW, помещенный NAMC, в SIRW, который ссылается на данные в другом стеке.
- МВСТ
- Переместить в стек (переключение процесса выполняется только в одном месте MCP)
Операторы магазинов
- STOD
- Деструктивное хранение (если у целевого слова есть нечетный тег, вызовите прерывание защиты памяти,
- сохранить значение в регистре B в памяти, адресованной регистром A. - Удалить значение из стека.
- STON
- Сохранение без разрушения (То же, что и STOD, но значение не удаляется - удобно для выражений F: = G: = H: = J).
- ОВРД
- Перезапись деструктивна, STOD игнорирует бит только для чтения (только для использования в MCP)
- ОВРН
- Неразрушающая перезапись, STON игнорирует бит только для чтения (только для использования в MCP)
Операторы загрузки
- НАГРУЗКА
- Загрузите значение, указанное адресом (тег 5 или тег 1 слово) наверху стека.
- При необходимости следуйте адресной цепочке.
- LODT
- Загрузить прозрачно - загрузить слово, на которое ссылается адрес в верхней части стека
Операторы трансфера
Обычно они использовались для передачи строк до тех пор, пока в исходной строке не был обнаружен определенный символ. Все эти операторы защищены от переполнения буфера ограничениями в дескрипторах.
- TWFD
- Передача пока ложная, деструктивная (забыть указатель)
- TWFU
- Передача пока false, обновить (оставить указатель в конце передачи для дальнейших передач)
- TWTD
- Перенос пока верный, разрушительный
- TWTU
- Перенести пока правда, обновить
- TWSD
- Переводные слова, деструктивные
- TWSU
- Перенести слова, обновить
- TWOD
- Перенести слова, перезаписать разрушительные
- ДВА
- Перенести слова, перезаписать обновление
- TRNS
- Перевести - передать исходный буфер в место назначения, преобразовав символы, как указано в таблице перевода.
- TLSD
- Передача в то время как менее разрушительная
- TLSU
- Перенести пока меньше, обновить
- ТГЭД
- Передача в то время как больше или равно, деструктивно
- ТГЭУ
- Перенос, когда больше или равно, обновить
- TGTD
- Перенос пока великий, разрушительный
- ТГТУ
- Перенести пока больше, обновить
- TLED
- Перенос пока меньше или равно, деструктивен
- TLEU
- Перенести пока меньше или равно, обновить
- TEQD
- Передача пока равная, деструктивная
- TEQU
- Перенести при равенстве, обновить
- TNED
- Передача пока не равная, деструктивная
- ТНЭУ
- Перенос пока не равен, обновляем
- ТУНД
- Передача безусловная, разрушительная
- ТУНУ
- Безусловный перевод, обновление
Операторы сканирования
Они использовались для сканирования струны полезно в письменной форме компиляторы.Все эти операторы защищены от переполнение буфера ограничиваясь пределами дескрипторов.
- SWFD
- Сканирование пока ложное, разрушительное
- SISO
- Изолировать строку
- SWTD
- Сканируйте пока правда, разрушительно
- SWTU
- Сканировать пока правда, обновить
- SLSD
- Сканируйте меньше, деструктивно
- SLSU
- Сканируйте пока меньше, обновляйте
- SGED
- Сканируйте, пока больше или равно, деструктивно
- СГЭУ
- Сканировать, когда больше или равно, обновить
- SGTD
- Сканируйте, пока больше, разрушительно
- SGTU
- Сканируйте пока лучше, обновляйте
- SLED
- Сканируйте, пока меньше или равно, деструктивно
- СЛЕУ
- Сканируйте, пока меньше или равно, обновите
- SEQD
- Сканируйте, пока равны, деструктивно
- SEQU
- Сканируйте, пока равны, обновите
- SNED
- Сканирование, пока не равное, разрушительное
- СНЭУ
- Сканируйте пока не равны, обновите
- CLSD
- Меньше сравнивайте персонажей, деструктивно
- CLSU
- Меньше сравнивайте символы, обновляйте
- CGED
- Сравните символы больше или равные, разрушительные
- CGEU
- Сравните символы больше или равно, обновите
- CGTD
- Сравните характер большего, разрушительного
- CGTU
- Сравнить символ больше, обновить
- CLED
- Сравнение символов меньше или равно, разрушительно
- CLEU
- Сравнить символы меньше или равно, обновить
- CEQD
- Сравните характер равный, деструктивный
- CEQU
- Сравнить равные символы, обновить
- CNED
- Сравните символы, не равные, деструктивные
- CNEU
- Сравнить символы не равны, обновить
Система
- SINT
- Установить интервальный таймер
- EEXI
- Включить внешние прерывания
- DEXI
- Отключить внешние прерывания
- SCNI
- Сканировать в - инициировать чтение ввода-вывода, это изменилось на разных архитектурах
- SCNO
- Сканировать - инициировать запись ввода-вывода, это изменилось на разных архитектурах
- STAG
- Установить тег (не разрешено в процессах на уровне пользователя)
- RTAG
- Читать тег
- IRWL
- Аппаратный псевдооператор
- SPRR
- Установить регистр процессора (сильно зависит от реализации, используется только на более низких уровнях MCP)
- RPRR
- Чтение регистра процессора (сильно зависит от реализации, используется только на более низких уровнях MCP)
- MPCW
- Сделать PCW
- HALT
- Остановить процессор (запросил оператор или возникла неисправимая проблема)
Другой
- ВАРИ
- Перейти к расширенному (переменные инструкции, которые были менее частыми)
- OCRX
- Индекс происходит, строит индексное слово, используемое в циклах
- LLLU
- Поиск в связанном списке - следуйте цепочке связанных слов, пока не будет выполнено определенное условие
- SRCH
- Маскированный поиск равных - Аналогичен LLLU, но проверяется маска в исследуемых словах на равное значение.
- TEED
- Таблица вводить редактировать деструктивная
- TEEU
- Таблица введите редактировать, обновить
- EXSD
- Выполнить одиночный микродеструктивный
- EXSU
- Выполнить одно микрообновление
- EXPU
- Выполнять обновление одного микро, одного указателя
- NOOP
- Нет операции
- NVLD
- Неверный оператор (шестнадцатеричный код FF)
- Операторы пользователя
- неназначенные операторы могут вызывать прерывания в операционной системе, чтобы можно было написать алгоритмы для обеспечения необходимой функциональности
Редактировать операторы
Это были специальные операторы для сложных операций со строками, особенно для бизнес-приложений.
- МИН
- Перемещение со вставкой - вставка символов в строку
- MFLT
- Перемещение с поплавком
- SFSC
- Перейти вперед исходный символ
- SRSC
- Пропустить символы обратного источника
- RSTF
- Сбросить поплавок
- ENDF
- Конечный поплавок
- МВНУ
- Переместить числовой безусловный
- MCHR
- Переместить персонажей
- INOP
- Вставить перфорацию
- INSG
- Вставить знак
- SFDC
- Переход к следующему символу назначения
- SRDC
- Пропустить символы обратного назначения
- INSU
- Вставить безусловный
- INSC
- Вставить условное
- КОНЕЦ
- Конец править
Примечания
- ^ Лексический уровень в слоге может относиться либо к отмеченной точке в стеке текущей задачи, либо к отмеченной точке в стеке родительской задачи. Период, термин стек может относиться к нескольким связанным стекам, вместе известным как стек сагуаро.
Рекомендации
- ^ Берроуза (сентябрь 1969 г.), Справочное руководство по системе обработки информации Burroughs B6500 (PDF), 1043676