我在理解如何获得正确的分支命令opCode时遇到了一些问题。让我们来看一下命令:
beq .+40beq opCode is 001400
我知道opCode中的最后两个字符应该包含我们需要跳转的偏移量。
在这个问题的答案中,写的是001417,但我不明白为什么,他们是如何从40获得17的?
会做一个简短的解释。
发布于 2013-07-15 23:41:44
PDP-11编程卡写入:新PC <-更新PC + (2 x偏移量)和更新PC = br指令的地址+ 2。注意:(2 x偏移量)表示偏移量以16位字计数。
所有的计算都是八进制的。
你读了001417。17是偏移量(低8位)。新PC =更新PC + (2 X 17) =更新PC + 36更新PC = 2,2+ 36 = 40。
因此,单词"001417“的反汇编为"br .+40”。
从"br .+40“中,您还可以注意到40 /2= 20 (单词)和20 -1= 17个单词。
来源:http://www.jfc.org.uk/documents/scandoc.php?page=4&maxpage=10%0A&dir=pdp11%2Fpdp11
https://stackoverflow.com/questions/17553519
复制相似问题