Команды процессора плавающей точки

Процессор плавающей точки (ППТ), подобно центральному процессору, имеет регистр состояния и восемь регистров-накопителей, но длиной 8 байт (АО ... А7). Регистр состояния содержит, в частности, бит точности выполнения команды, который определяет длину операндов — 32 (одинарная точность) и 64 (двойная точность) разряда.

Сами команды не содержат признаков точности, хотя мнемоника команд для удобства чтения программы может содержать букву F (одинарная точность) или D (двойная точность). При трансляции команд, например NEGF и NEGD, будет выработан один код операции — 1707, а длина операндов будет определяться только битом точности PSWF. В PSWF содержатся также признаки результата операции NE, ZE, VE и СЕ, устанавливаемые отдельными командами. Кроме того, некоторые команды ППТ изменяют признаки результата центрального процессора.

Адресация операндов ППТ несколько отличается от обычной регистровой и адресации с произвольным доступом. В двухадресных командах ППТ один операнд размещается в регистрах-накопителях АО ... A3. Поэтому для номера регистра (А) в коде команды отводится два бита (сокращение числа регистров, используемых в качестве первого операнда, вызвано нехваткой комбинаций для кода операции). Второй операнд адресуется, как обычно при использовании произвольного доступа, с помощью 6 разрядов: 3 — метод адресации и 3 — номер регистра. Все методы адресации, кроме регистрового (нулевого), совпадают с рассмотренными ранее "методами адресации; при этом номер регистра указывает на один из регистров R0 ... R7 центрального процессора, и операнд выбирается из памяти. При регистровой адресации номер регистра рассматривается как номер регистра-накопителя, и операнд выбирается из регистров АО ... А7. Адресация операндов ППТ с произвольным доступом: FD — приемника, FS (в отличие от обычных DD и SS) — источника. Обозначения адресов приемника и источника ППТ также отличаются: fdst и fsrc соответственно.

Так как в системе команд ППТ нет двухадресных команд с произвольным доступом и хотя бы один из операндов предварительно должен быть размещен в регистре-накопителе, вводятся специальные команды обмена накопителей с оперативной памятью LDF (LDD) — загрузка и STF (STD) — запись.

Кроме этих основных команд, есть команды загрузки (записи) числа с преобразованием точности — LDCDF (LDCFD) и STCFD (STCDF). Тип преобразования (О — D или D — О) определяется состоянием разряда точности РСП (07): при состоянии 1 (двойная точность) происходит преобразование D — О, при состоянии 0 (одинарная точность) — преобразование О — D. Наконец, есть команды загрузки (записи) с преобразованием формы представления числа. Так как ППТ производит операции только над числами с плавающей точкой, то при загрузке с преобразованием (LTCFI (LTCFL, LTCDI, LTCDL)) имеет место преобразование ФТ-ЧТТ, а при записи (STCFI, STCFL, STCDI, STCDL) —преобразование ПТ->ФТ. Так как каждая форма представления имеет по два формата (ПТ: О и D, ФТ — короткий и длинный формат), четыре типа преобразования находят свое отражение в мнемонике команды. Однако тип преобразования определяется не кодом операции, а состоянием двух разрядов РСП: 07 (точности) и 06 (длины числа с фиксированной точкой).

Кроме указанных команд, имеются еще четыре команды переименования, использующие обычный произвольный доступ, так как производится запись (загрузка) либо не всего операнда, а его части — порядка (STEXP и LDEXP), либо слова состояния ППТ PSWF (STEPS), либо двух слов состояния исключения (STST). В первом слове состояния исключения (РОШ ПТ) содержится информация о типе ошибки, вызвавшей прерывание (всего семь типов ошибок), во втором слове (УАСШ ПТ) — адрес команды.

В ППТ три унарные команды присваивания: очистки (CLRF(D)), вычисления абсолютного значения (ABSF(D)) и изменения знака (NEGF(D)), а также пять двухместных команд арифметических операций. В двухместных командах, в отличие от команд арифметических операций центрального процессора, результат размещается на месте первого операнда — в регистре-накопителе. Кроме команд четырех арифметических операций введена команда, совмещающая умножение с преобразованием ПТ->-ФТ. Все арифметические операции производят исчисление предикатов над результатом и заносят их в слово состояния PSWF (признак результата).

В системе команд есть две команды исчисления предикатов: проверки (TSTF(D)) и сравнения (CMPF(D)), которые не изменяют операндов.

По командам управления ППТ производится установка PSWF (LTFPS — загрузка из памяти) и форматов чисел ПТ и ФТ (т.е. разрядов 06 и 07) — команды SETF, SETD, SETI, SETL, перенос признаков результата из PSWF в РСП.