3

我正在学习微编程,但对微指令实际上是什么感到困惑。我正在使用 MIPS 架构。我的问题如下

比如说我有 ADD 指令,这个微指令会是什么样子?add 指令有多少条微指令。网上有什么地方可以看到MIPS基本指令的微指令列表吗?

如何找出 ADD 微程序指令的位串?

4

2 回答 2

3

微编程是一种用更简单的“微指令”来实现复杂指令集架构(如 x86)的方法。MIPS 是 RISC 指令集架构,通常不使用微编程实现,因此 ADD 指令的微指令为零。

要回答您的具体问题,您必须知道您的特定微架构的定义是什么。

于 2011-07-18T22:41:16.270 回答
2

这是一个如何将 加载EPC到其中一个寄存器并向其中添加 4 字节的示例:

lw      t0, 20(sp)      // Load EPC
addi    t0, 4           // Add 4 to the return adress
sw      t0, 20(sp)      // Save EPC

您可以使用“很多”指令,您可以在此处查看 MIPS 指令集。以我的拙见,MIPS 非常简洁易学!一个有趣的事实是,第一台 Playstation 使用了 MIPS CPU。

示例说明

  • lw= 加载字
  • la= 加载地址
  • sw= 保存单词
  • addi= 添加immidate

然后你有很多条件指令,例如:

  • bne= 分支不相等
  • bnez= 分支不等于 0

有了这些,您j就可以跳转到一个地址。

这是我曾经为 MIPS 编写的异常处理程序的一个示例,这是外部源处理程序:

External: 
        mfc0    t0, C0_CAUSE        // We could aswell use 24(sp) to load CAUSE
        and     t0, t0, 0x02000     // Mask the CAUSE
        bnez    t0, Puls            // If the only character left is 
                                    // "not equal zero" jump to Puls

        j   DisMiss                 // Else jump to DisMiss

在上面的示例中,我定义了一个名为External我可以跳转到的入口点,就像我使用DisMissto 循环一样,您通常会跳转到自己。

这里还使用了一些其他说明:

  • mfc0= 从协处理器 0 移动

要处理标签,我建议您检查这个问题/答案。

下面是一些关于使用 MIPS 进行微编程的资源:

于 2011-07-04T14:08:10.970 回答