【发布时间】:2018-06-20 00:19:36
【问题描述】:
在计算机编程的艺术第 1 卷第三版一书中,我很难理解以下 MIX 汇编语言指令的含义:ENT1 *,出现在页面上189 本书。
(p.189) 例如,如果我们想让
MAXN的调用序列为JMP MAXN CON n那么子程序可以写成如下:
MAXN STJ *+1 ENT1 *
到目前为止我发现的是以下行
MAXN STJ *+1
将存储常量n的内存地址存储到存储指令ENT1 *的内存位置的[0:2]字段中。
因此,我在这里猜测以下行
ENT1 *
应该将存储指令ENT1 *的内存位置的[0:2]字段的值加载到寄存器I1。
但是,星号(*)的含义,在教科书中是这样描述的:
(p.146) 星号(读作“self”)指的是它出现的行的位置。
那么,ENT1 * 不应该只是将存储指令ENT1 * 的内存位置的地址存储到寄存器I1 中吗?
【问题讨论】:
-
你试过用
mixal组装它并查看机器代码的hexdump吗?我不知道 MIX,但很好奇。我发现ENTi记录在gnu.org/software/mdk/manual/html_node/…。 (而且那个 MIX 使用 6 位字节和 5 字节字......很有趣。难怪 Knuth 用 MMIX 代替它,一个 RISC 机器)