我有这个指令:
Move @-4(pc), 766(r5)
pc : 1000 (start point)
你能解释一下这个指令应该如何运行吗?
我不记得关于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,给你一个地址…"。。。"@"的意思是拿走该地址的内容。因此,如果电脑是1000,你可以从中减去4(八进制),得到774,然后你在地址774中查找内容(这就是"@"的意思)。得到这个值——SOURCE操作数之后,我们必须把它放在某个地方,即DESTINATION地址。转到R5(通用寄存器5)并在其中查找地址。在该地址上加766八进制,就有了目的地地址(不管是什么)。
PDP-11s CPU可以将SOURCE移动到DESTINATIOn,因为它现在同时具有这两个功能。(这是MOV指令,而不是MOVe——如果我的记忆正确的话,所有PDP指令都是3个字母的助记符——或者至少大多数是)
说了这么多(!!),SOURCE操作数低于1000标记,即它在保留区(PDP-11上的地址0到1000是"保留的"),所以我不想推测如果这是在真实PDP上操作的真实指令会发生什么!!!系统陷阱?
小心
R