【问题标题】:PDP 11 - how to know the Op Code of branch commandsPDP 11 - 如何知道分支命令的操作码
【发布时间】:2013-07-15 23:41:43
【问题描述】:

我在理解如何获得正确的分支命令操作码方面遇到了一些问题。 让我们说命令:

beq .+40

beq 操作码是001400
我知道 opCode 中的最后两个字符应该包含我们需要跳转的偏移量。
在这个问题的答案中,写的是001417,但我不明白为什么,他们是如何从40 获得17 的?
需要一个简短的解释。

【问题讨论】:

  • 40(八进制)是 32,17(八进制)是 15。注意存储的偏移量乘以 2,所以 15 变为 30。然后还有两个不明字节,我猜是指令测量距分支之后位置的偏移量,而汇编代码测量距分支开始位置的偏移量。
  • 我认为哈罗德是对的。八进制 17 是 0b001111,偏移量在添加到 pc 之前乘以 2,因此 0b0011110 为这条指令加 2,你得到 0b0100000,即 40。许多架构在指令之后将偏移量应用于 pc(想想用于获取指令字节的 pc,在指令开始解码和执行时,pc 已指向指令后面的字节)。

标签: assembly branch opcode pdp-11


【解决方案1】:

PDP-11 编程卡写道: 新 PC

所有的计算都是八进制的。

你读到 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

【讨论】:

    猜你喜欢
    • 2013-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-04
    • 1970-01-01
    • 1970-01-01
    • 2012-07-18
    • 2014-10-14
    相关资源
    最近更新 更多