【问题标题】:Does mips have 32 bit addresses AND 32 bit instructions?mips 有 32 位地址和 32 位指令吗?
【发布时间】:2016-08-09 11:55:09
【问题描述】:

我知道 32 位 MIPS 指令和内存寄存器是……嗯 32 位……并且 PC 会在指令寄存器中计算该指令的地址。

我的问题是:32 位地址是否附加到 32 位指令中?

忽略这些都是零的事实......

0x00000000(地址)是否与 0x00000000(指令)连接?

例如,R-Type 是

OP(6) RS(5) RT(5) RD(5) SHIFTAMMT(5) FUNCT(6) 
=> 32 bit instruction
=> 000000_00000_00000_00000_00000_000000

上面的地址在哪里 000000_00000_00000_00000_00000_000000

两个 32 位数字是否连接在一起,以便 PC 输出对应于 64 位 值的上半部分的 32 位?我经常看到有

Address     Instruction
0x00000000  0x00000000

任何帮助将不胜感激。

【问题讨论】:

    标签: memory mips processor mips32 program-counter


    【解决方案1】:

    就您的要求而言,指令集是固定长度的,不多不少。

    对于某些指令,地址包含在寄存器中,并且只需要 32 位指令的几个位来定义该寄存器。

    如果寄存器不用作地址源,那么指令中的一定百分比的位通常包含偏移量,因为所有指令都是 32 位,因此偏移量很可能以指令为单位而不是字节,没有点浪费这两个位。我不记得 mips 是否有任何其他编码,如果有,那么它只能是地址的一小部分。

    必须保留指令的一定百分比的位来定义该指令,基于该编码,其余位定义该指令的参数。这些指令编码有很多来源,尤其是 mips 网站。

    (32 位固定长度规则有一个例外,它们有一个 16 位指令集,但这不会改变地址的编码方式,mips 不是像 x86 或其他 cisc 那样的可变长度,您可以在其中添加许多字节作为参数)

    【讨论】:

    • 是的 mips 有 32 位指令和 32 位地址。一条指令根本无法承载完整的 32 位地址。
    【解决方案2】:

    您经常看到的表格显示了指令的地址和指令本身。在内存中,每个字(字节)都有一个永远不会改变的地址。地址(处理器使用的位置)和指令(存储在该位置的内容)是独立的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-02
      • 1970-01-01
      • 2020-07-26
      • 2010-11-08
      • 1970-01-01
      • 2012-02-16
      • 2013-03-19
      • 1970-01-01
      相关资源
      最近更新 更多