我有这样的指示:
Move @-4(pc), 766(r5)
pc : 1000 (start point)你能解释一下这条指令应该如何运行吗?
发布于 2012-12-10 22:24:20
我不记得PDP了,但VAX语法,这是一个扩展,意味着如下: 766( R5 )意味着第二个操作数的地址是R5+766(如果它是pdp,则为八进制)。@-4(RC)我猜意思是自动递减,所以它取RC,subs4,读取一个变量的地址。因此,在入口点之前的4个字节有指向var1的指针,var2位于R5 + 766(oct);Move显然是移动指令。我猜,它把OP1转移到了OP2上。
发布于 2012-12-29 00:31:23
我看起来像是PDP-11代码... @-4(PC)的意思是‘将程序计数器的内容减去4,得到一个地址...而'@’表示获取该地址的内容。因此,如果PC是1000,那么从它减去4(八进制)得到774,然后在内部地址774中查找内容(这就是'@‘的意思)。有了这个值-源操作数,我们就必须把它放在某个地方,即一个目的地址。转到R5 (通用寄存器5)并在其中查找地址。将766八进制加到这个地址上,你就得到了目的地址(不管它是什么)。
然后,PDP-11scpu可以将源文件移动到DESTINATIOn,因为它现在拥有这两个文件。(而且它是MOV指令,而不是MOVe -如果我没记错的话,所有的PDP指令都是3个字母的助记符-或者至少大部分是)
说了这么多(!!)源操作数低于1000标记,即它在保留区域中( PDP-11上的地址0到1000是“保留”的),所以我不想推测如果这是在真实的PDP上操作的真实指令会发生什么...!系统陷阱?
保重
R
https://stackoverflow.com/questions/13793491
复制相似问题