我在理解如何获得正确的分支命令操作码方面遇到了一些问题。让我们说命令:
beq .+40
beq opCode 是001400
我知道 opCode 中的最后两个字符假设包括我们需要跳转的偏移量。
在这个问题的答案中,它是书面的,001417
但我不明白为什么,他们是如何得到17
的40
?
将有一个简短的解释。
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