2

我有这个指令:

Move @-4(pc), 766(r5)
pc : 1000 (start point)

你能解释一下这条指令应该如何运行吗?

4

2 回答 2

1

我不记得 pdp,但作为扩展的 VAX 语法将意味着以下内容:766(r5)表示第二个操作数的地址是 R5 + 766(如果它是 PDP,则为八进制)。@-4(RC) 我猜是自动递减,所以它需要 RC,subs 4,读取一个值,它是一个变量的地址。因此,入口点前 4 个字节有指向 var1 的指针,var2 位于 R5 + 766(oct);移动显然是移动指令。我猜,它将 OP1 移动到 OP2。

于 2012-12-10T14:24:19.713 回答
0

对我来说看起来像 PDP-11 代码...@-4(PC) 表示“将程序计数器的内容减 4 以给您一个地址...而“@”表示获取该地址的内容。因此,如果 PC 为 1000,则从中减去 4(八进制)得到 774,然后在地址 774 中查找内容(这就是“@”的含义)。得到这个值 - 源操作数之后,我们必须把它放在某个地方,即目标地址。转到 R5(通用寄存器 5)并在那里查找地址。将 766 八进制添加到该地址,您就有了 DESTINATION 地址(无论它是什么)。

然后,PDP-11s CPU 可以将 SOURCE 移动到 DESTINATION,因为它现在拥有两者。(而且它是 MOV 指令而不是 MOVe - 如果我的记忆正确的话,所有 PDP 指令都是 3 个字母的助记符 - 或者至少其中大部分是)

说了这么多(!!)源操作数低于 1000 标记,即它在保留区域中(PDP-11 上的地址 0 到 1000 被“保留”)所以我不想推测如果会发生什么这是在真正的 PDP 上运行的真正指令……!!!系统陷阱?

小心

R

于 2012-12-28T16:31:23.300 回答