Введение

Слово состояния программы (PSW) — это регистр, который выполняет функции регистра состояния и счётчика программы, а иногда и больше. Термин также применяется к копии PSW в памяти. В этой статье рассматривается только PSW в IBM System/360 и его преемниках, и используется принятая IBM конвенция нумерации битов, начиная с 0 как самого левого (старшего) бита. Хотя некоторые поля в PSW могут быть протестированы или установлены с использованием не привилегированных инструкций, тестирование или установка остальных полей может быть выполнено только с использованием привилегированных инструкций. В PSW содержится двухбитовый код состояния, представляющий ноль, положительное значение, отрицательное значение, переполнение и аналогичные флаги регистров состояния других архитектур. Инструкции условного перехода тестируют это как четырехбитовое значение, при этом каждый бит представляет собой проверку одного из четырех значений кода состояния: 23 + 22 + 21 + 20. (Поскольку IBM использует порядок следования байтов big-endian, маска со значением 8 выбирает код 0, маска со значением 4 выбирает код 1, маска со значением 2 выбирает код 2, а маска со значением 1 выбирает код 3). 64-битный PSW описывает (в частности):

Маски прерываний
Привилегированные состояния
Код состояния
Адрес инструкции

В ранних реализациях архитектуры (System/360 и ранней System/370) адрес инструкции составлял 24 бита; в более поздних реализациях (XA/370) адрес инструкции составлял 31 бит плюс бит режима (24-битный режим адресации, если равен нулю; 31-битный режим адресации, если равен единице), что в сумме давало 32 бита. В современных реализациях архитектуры (z/Architecture) адрес инструкции составляет 64 бита, а сам PSW — 128 бит. PSW может быть загружен инструкцией LOAD PSW (LPSW или LPSWE). Его содержимое можно изучить с помощью инструкции Extract PSW (EPSW).

S/360

На всех, кроме 360/20, PSW имеет следующие форматы. Формат S/360 Extended PSW применяется только к 360/67 с битом 8 управляющего регистра 6 установленным. + IBM S/360 PSW форматы+ S/360 Стандартный PSW Система Маска Ключ A M W P Код прерывания 0 7 8 11 12 13 14 15 16 31 ILC CC Маска программы Адрес инструкции 32 33 34 35 36 39 40 63+ S/360 Стандартные PSW сокращения Биты Поле Значение 0 7 SM Маска системы Бит Значение 0 Маска канала 0 1 Маска канала 1 2 Маска канала 2 3 Маска канала 3 4 Маска канала 4 5 Маска канала 5 6 Маска канала 6 7 Внешняя маска 8 11 Ключ Ключ PSW 12 A ASCII 13 M Маска контроля машины 14 W Состояние ожидания 15 P Проблемное состояние 16 31 IC Код прерывания 32 33 ILC Код длины инструкции 34 35 CC Код состояния 36 39 PM Маска программы Бит Значение 36 Переполнение фиксированной точки 37 Переполнение десятичной точки 38 Переполнение под экспонентой 39 Значимость 40 63 IA Адрес инструкции+ S/360 Расширенный PSW Запасные биты 24/32-битный режим Контроль трансляции I/O Маска Внешняя маска Ключ A M W P ILC CC Маска программы Запасные 0 3 4 5 6 7 8 11 12 13 14 15 16 17 18 19 20 23 24 31 Адрес инструкции 32 63+ S/360 Расширенные PSW сокращения Биты Поле Значение 0 3 Запасные (должны быть 0) 4 24/32-битный адресный режим 5 Контроль трансляции 6 IO I/O Маска (сводная) 7 EX Внешняя маска (сводная) 8 11 Ключ защиты 12 A ASCII 13 M Маска контроля машины 14 W Состояние ожидания 15 P Проблемное состояние 16 17 ILC Код длины инструкции 18 19 CC Код состояния 20 23 PM Маска программы Бит Значение 20 Переполнение фиксированной точки 21 Переполнение десятичной точки 22 Переполнение под экспонентой 23 Значимость 24 31 Запасные 32 63 IA Адрес инструкции

S/370

+ Форматы PSW IBM S/370 + PSW в основном режиме управления S/370 Маска канала IO EX Ключ 0 M W P Код прерывания 0 1 2 4 5 6 7 8 11 12 13 14 15 16 31 ILC CC Маска программы Адрес инструкции 32 33 34 35 36 39 40 63+ Сокращения для PSW в основном режиме управления S/370 Биты Поле Значение 0-5 Маски каналов для каналов 0-5 6 IO Маска ввода/вывода для каналов > 5 7 EX Внешняя маска 8-11 Ключ Ключ PSW 12 E=0 Основной режим управления 13 M Маска машинной проверки 14 W Состояние ожидания 15 P Проблемное состояние 16-31 IC Код прерывания 32-33 ILC Код длины инструкции 34-35 CC Код условия 36-39 PM Маска программы Бит Значение 36 Переполнение фиксированной точки 37 Переполнение десятичной точки 38 Недополнение экспоненты 39 Значимость 40-63 IA Адрес инструкции + PSW в расширенном режиме управления S/370 0 R 0 0 0 T IO EX Ключ 1 M W P S 0 CC Маска программы 0 0 0 0 0 0 0 0 0 1 2 4 5 6 7 8 11 12 13 14 15 16 17 18 19 20 23 24 31 0 0 0 0 0 0 0 0 Адрес инструкции 32 39 40 63+ Сокращения для PSW в расширенном режиме управления S/370 Биты Поле Значение 1 R Маска PER 5 T Режим DAT 6 IO Маска ввода/вывода; подчиняется маске канала в CR2 7 EX Внешняя маска; подчиняется маске внешнего подкласса в CR0 8-11 Ключ Ключ PSW 12 E=1 Расширенный режим управления 13 M Маска машинной проверки 14 W Состояние ожидания 15 P Проблемное состояние 16 S Управление пространством адресов 0=основной режим 1=Вторичный режим 18-19 CC Код условия 20-23 PM Маска программы Бит Значение 20 Переполнение фиксированной точки 21 Переполнение десятичной точки 22 Недополнение экспоненты 23 Значимость 40-63 IA Адрес инструкции