【发布时间】:2012-12-10 00:38:18
【问题描述】:
我有这个指令:
Move @-4(pc), 766(r5)
pc : 1000 (start point)
你能解释一下这条指令应该如何运行吗?
【问题讨论】:
标签: assembly pdp-11 addressing-mode
我有这个指令:
Move @-4(pc), 766(r5)
pc : 1000 (start point)
你能解释一下这条指令应该如何运行吗?
【问题讨论】:
标签: assembly pdp-11 addressing-mode
我不记得 pdp,但 VAX 语法,它是一个扩展,意味着以下: 766(r5) 表示第二个操作数的地址是 R5 + 766(如果是 PDP,则为八进制)。 @-4(RC) 我猜是自动递减,所以它需要 RC,subs 4,读取一个值,它是一个变量的地址。因此,入口点前 4 个字节有指向 var1 的指针,var2 位于 R5 + 766(oct);移动显然是移动指令。我猜,它会将 OP1 移动到 OP2。
【讨论】:
在我看来像 PDP-11 代码...@-4(PC) 表示“将程序计数器的内容减 4 以提供地址...”而“@”表示获取该内容地址。因此,如果 PC 为 1000,则从中减去 4(八进制)得到 774,然后在地址 774 中查找内容(这就是“@”的含义)。得到这个值 - SOURCE 操作数之后,我们必须把它放在某个地方,即一个 DESTINATION 地址。转到 R5(通用寄存器 5)并在那里查找地址。将 766 八进制添加到该地址,您就有了 DESTINATION 地址(无论是什么)。
然后 PDP-11s CPU 可以将 SOURCE 移动到 DESTINATION,因为它现在拥有两者。 (而且它是 MOV 指令而不是 MOVe - 如果我的记忆正确的话,所有 PDP 指令都是 3 个字母的助记符 - 或者至少其中大部分是)
说了这么多 (!!) SOURCE 操作数低于 1000 标记,即它在保留区域中(PDP-11 上的地址 0 到 1000 被“保留”)所以我不想推测什么如果这是在真实 PDP 上运行的真实指令,将会发生...... !!!系统陷阱?
保重
R
【讨论】: