Operating system 如何在IBM大型机中读取PSW(程序状态字)中的数据

Operating system 如何在IBM大型机中读取PSW(程序状态字)中的数据,operating-system,cobol,mainframe,Operating System,Cobol,Mainframe,信息是: 我知道0C7是一个数据错误,但如何读取PSW异常终止代码?PSW不包含异常终止代码,它显示异常终止时的处理器状态 在您的示例中,PSW有8个字节,因此它是ESA/390格式(在64位模式下,PSW是16个字节),因此我将重点介绍这种情况 通常,在调查0C7异常结束时,唯一重要的是包含NSI(下一条顺序指令)的最后31位,NSI指向导致异常的语句后的机器语句。在您的情况下是地址60009260。您必须调查该地址之前的语句,以查看它使用的数据,然后调查其格式不正确的原因 另一方面,显示的

信息是:


我知道0C7是一个数据错误,但如何读取PSW异常终止代码?

PSW不包含异常终止代码,它显示异常终止时的处理器状态

在您的示例中,PSW有8个字节,因此它是ESA/390格式(在64位模式下,PSW是16个字节),因此我将重点介绍这种情况

通常,在调查0C7异常结束时,唯一重要的是包含NSI(下一条顺序指令)的最后31位,NSI指向导致异常的语句后的机器语句。在您的情况下是地址
60009260
。您必须调查该地址之前的语句,以查看它使用的数据,然后调查其格式不正确的原因

另一方面,显示的PSW以
FF
-开头,这种情况永远不会发生(见下文),因此显示的值可能已损坏,NSI值也应受到一定程度的怀疑

为了回答上述问题,这里是完整的PSW布局(所有偏移量和长度均为位):

  • 偏移量0,长度1:始终
    0
    1
    在您的示例中!!!)
  • 偏移量1,长度1:程序事件记录标志
  • 偏移量2,长度3:始终
    000
  • 偏移量5,长度1:动态地址转换标志
  • 偏移量6,长度1:IO中断标志
  • 偏移量7,长度1:外部中断标志
  • 偏移量8,长度4:PSW密钥(与用于存储保护的存储密钥相比)
  • 偏移量12,长度1:始终
    1
  • 偏移量13,长度1:机器检查中断标志
  • 偏移量14,长度1:等待状态标志
  • 偏移量15,长度1:问题状态标志
  • 偏移量16,长度2:地址空间控制
  • 偏移量18,长度2:条件代码(例如通过比较指令设置)
  • 偏移量20,长度4:程序掩码(例如,通过溢出时的算术指令进行设置)
  • 偏移量24,长度1:IBM保留
  • 偏移量25,长度6:始终
    000000
  • 偏移量31,长度1:扩展寻址模式标志(
    1
    表示64位寻址)
  • 偏移量32,长度1:basic.addressing-mode标志(
    1
    表示31位寻址,而不是24位寻址)
  • 偏移量33,长度31:下一条顺序指令
有关各种标志含义以及64位PSW布局的更多详细信息,请参见“z/体系结构操作原理”手册的“控制”章节