【问题标题】:Instruction Execution in MIPSMIPS 中的指令执行
【发布时间】:2015-11-20 16:01:55
【问题描述】:

这是 MIPS 子集实现的抽象视图,显示了 主要功能单元以及它们之间的主要联系

为什么我们需要将(PC+4)的结果与指令地址相加?

我知道 PC(程序计数器)是计算机处理器中的一个寄存器,其中包含当前正在执行的指令的地址(位置),但我不明白为什么我们要在其中添加第二个加法器图片?

【问题讨论】:

    标签: mips instructions instruction-set


    【解决方案1】:

    CPU 可以执行的一些操作是“跳转”。 如果您的操作是跳转,则从第二个块中您将获得新指令的地址或您必须执行的跳转长度。

    【讨论】:

    • a.ndrea 好的,你给了我一个明确的解释,但是我还有一个问题,如果指令不跳转,为什么需要添加新指令的地址或者新指令的地址是什么说明?
    • 如果指令不是跳转,则新指令的地址将简单地为actual_instruction_address + 4,第二个加法器将得到一个0作为第二个输入
    • a.ndrea last question ^_^" ,在分支寻址目标 = PC+ 偏移 *4 并且这里的 PC 已经增加了 4 .. 所以来自指令存储器的指令应该是偏移 *4 ..但他们没有显示这些细节..我说的对吗?
    【解决方案2】:

    不是指令地址,指令内存的输出是指令本身。

    他们显然隐藏了大部分组件(没有控制电路)。他们的意思可能是分支的数据路径,尽管他们确实应该至少将与 ALU 输出的链接放在那里。即便如此,最好对指令进行显式解码、符号扩展和左移。所以它真的不准确,但我不明白它们还有什么意思。

    【讨论】:

    • harold,是的,他们必须添加 3 个多路复用器和控制电路以使其准确,我从您那里了解到,第二个加法器添加了指令本身和 (PC+4),但是为什么我们需要这样做?
    • @ReemAljunaid 希望只是指令的一部分,但他们几乎将指令解码隐含了......但这是实现分支所必需的,分支的偏移量为最后 16 位
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-10
    • 1970-01-01
    • 1970-01-01
    • 2020-04-30
    相关资源
    最近更新 更多