IBM System/32 上的十六进制分支指令的预期用途是什么

问题描述 投票:0回答:1

有人知道 IBM System/32 上 Hex Branch 指令的预期用途吗?

如果有聪明的读者不了解 System/32,十六进制分支将微指令地址寄存器(MAR,程序计数器)的低字节的高半字节替换为 4 位立即数指令。然后,它将指令地址寄存器的低字节的低半字节替换为寄存器的高字节或低字节的区域或数字部分。

摘自 SY31-0346-4 5320 理论图,第五版(1977 年 5 月)

该指令作为 16 路无条件分支运行。所选寄存器的高字节或低字节的区域或数字部分用于替换 MAR 的位 12-15。位 8-11 MAR 被 MAR' 的位设置取代。

(MAR' 是取自指令的 4 位。请注意,IBM 从左到右标记位,因此 01234567。)

从描述来看,该指令似乎旨在与分区十进制值一起使用。在分区十进制值中,字节的低半字节包含数值0-9,该位置的高半字节表示多位十进制数的符号。正数和负数都有多个值,但首选值是 0b1111(正数)和 0b1101(负数)。不考虑该位以外的数字的区域值。

因为这是绝对跳转,似乎程序员需要知道指令的地址才能知道分支将在哪里恢复,但这也许是由汇编器处理的。

例如,假设 MAR 包含 0x1234,WR2 包含 0xF5D6 (-56)。之后

HBZ 7,WR2(L)

MAR 将包含 0x127D。

那有什么意义呢?您怎么知道该地址有什么指令?

ibm-midrange retro-computing
1个回答
0
投票

操作理论手册中的这些 System/32 指令适用于“CSP”——控制存储处理器。实际上,它们是用于编写“微代码”的实际指令,然后用于解释性地执行“MSP”(主存储处理器)的用户可见 S/32 指令集,与 IBM 系统相同/3,以及 IBM RPG-II 和 COBOL 编译器使用的内容; MSP和CSP也用在S/34和S/36处理器上——CSP端运行SSP操作系统,MSP端运行用户的COBOL或RPG-II应用程序。 (请注意,S/34 和 S/36 FORTRAN 和 BASIC 实际上是使用“科学指令”运行的,这些指令是使用 CSP 上加载的不同微代码运行的。)

如果您检查 Bitsavers 上适用于 S/3、S/32、S/34 和 S/36 的所有 IBM 手册,您可以得到更好的想法……S/34 和 S/36 汇编语言手册还有“科学说明”手册。希望有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.