【问题标题】:little man computer- Branch on positive小人电脑-正面分支
【发布时间】:2013-10-28 23:18:54
【问题描述】:

在小人计算机(LMC)中,条件分支上的正数(BRP)包括零作为正数(我认为数字> 0 是正数)。我知道 LMC 是一个富有想象力的概念,但我想知道是否有任何处理器(过时的或当前的)在正数上使用 Branch,包括零作为正数?

【问题讨论】:

  • 我认为您的意思是 BRP。正如您所注意到的,这肯定是用词不当:有负数、零和正数,您只能选择一个。
  • 但我一直在寻找诸如 8086、8085 之类的微处理器来使用 BRP,包括零作为正数
  • 许多处理器都有分支指令(或条件代码)来表示“零或正”,通常基于两个状态标志。在 8086 中,它基于进位和零(用于无符号比较和减法)或 sign 和零(用于有符号比较和减法)。因此,如果您减去两个有符号数,并且想要在结果为零或正数时进行分支,则只需确保符号标志指示“非负数”(重置)。 JGE 指令正是使用这个条件。

标签: little-man-computer


【解决方案1】:

BRZ 将指令设置为专门在 Branch 为零时执行,但 BRP 确实将零计数为正数,因此解决此问题的唯一方法是将 BRP 指令与 BRZ 指令相矛盾。

【讨论】:

    【解决方案2】:

    您的问题是关于特定处理器的,我能找到的最接近的是 PDP-8 SPA – 在 AC ≥ 0 时跳过。我可以描述将零作为正数的理由。几乎所有现代计算机都对整数使用二进制补码格式。这使得最左边的位成为符号位。负数的符号位为 1,正数的符号位为 0。数字零表示为全零,包括符号位。因此,如果在测试符号位的二进制补码计算机上实现正分支,则数字零将为正。

    另外,当 Madnick 博士设计 LMC 时,以及现在,计算器不会显示带有数字零的减号。

    也就是说,我希望 Madnick 称它为 BNN: branch if not negative。

    【讨论】:

      【解决方案3】:
      • PDP-11 has BPL:

        如果加号 (N=0) 则 BPL 分支

        ...其中 N 是负标志(0 或 1),因此它适用于测试值不为负的情况。

      • ARM has BPL:

        bpl - 如果 pl(正或零)则分支

        ...这包括6502:

        BPL - 如果为正则分支

        如果否定标志被清除,则将相对位移添加到程序计数器以导致分支到新位置。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-10-24
        • 2011-09-23
        • 2020-07-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-02-03
        相关资源
        最近更新 更多