向MIPS添加新命令

向MIPS添加新命令,mips,Mips,我在接受采访时,得到了以下问题: 我们希望使用以下语法创建一个名为foo的新MIPS命令: foo-rt,rs,immediate 假设rt和rs不相等,立即可以是正、负或零,长度为16位 该命令执行以下操作: ADDI $rt, $0, immediate ADDI $rs, $rt, 4 rt=immediate rs=immediate+4 回答以下问题: 如果我们想在单周期MIPS中实现此命令,我们应该做哪些最小的更改?如果我们想要在多周期MIPS 使用基本的MIPS命令创建的

我在接受采访时,得到了以下问题:

我们希望使用以下语法创建一个名为
foo
的新MIPS命令:

foo-rt,rs,immediate

假设
rt
rs
不相等,
立即
可以是正、负或零,长度为
16位

该命令执行以下操作:

ADDI $rt, $0, immediate
ADDI $rs, $rt, 4 
  • rt=immediate

  • rs=immediate+4

  • 回答以下问题:

  • 如果我们想在
    单周期MIPS
    中实现此命令,我们应该做哪些最小的更改?如果我们想要在
    多周期MIPS

  • 使用基本的
    MIPS
    命令创建的伪命令,以创建
    foo


  • 我认为应该在
    ALU
    中对
    single
    multi
    进行更改,但我错了。我没有机会回答第二个问题,因为我搞砸了第一个问题(我不知道答案)。我希望他们能再给我一次机会,所以现在我正在努力学习这些材料。如何回答这些问题?

    对于第二个问题,可以通过以下方式给出伪指令:

    ADDI $rt, $0, immediate
    ADDI $rs, $rt, 4 
    
    • 首先,您要将
      rt
      设置为
      immediate
      值,这可以通过向
      immediate
      添加一个零并将该值写回
      rt
      来实现
    • 其次,您需要将4添加到
      immediate
      并将其写回
      rs
      ,注意
      immediate
      值已经存储在
      rt
      寄存器中(根据前面的指令),现在您需要在
      rt
      中获取值并向其添加立即值(即4),并将结果写回
      rs

    它被称为命令,而不是命令。不,您不能向任何不可编程硬件添加任意指令。伪指令是不同的,因为它就像macros@phuclv这是一个理论问题——从创造者的角度来看。当然,我们不会将此
    指令添加到MIPS中,只是理论上。这里只是猜测,但对于单个周期,您需要添加对回写两个寄存器的支持。对于多周期,您不需要这样做。用基本指令实现它应该很简单,你对此没有问题,对吗?