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:扩展寻址模式标志(
表示64位寻址)1
- 偏移量32,长度1:basic.addressing-mode标志(
表示31位寻址,而不是24位寻址)1
- 偏移量33,长度31:下一条顺序指令