【问题标题】:Assigning a hex number to IR branches in a Processor将十六进制数分配给处理器中的 IR 分支
【发布时间】:2012-03-01 04:11:30
【问题描述】:

谁能帮我理解如何将 5 个 IR 分支中的每一个分配给一个十六进制数字?

R[2] ← Mem2[R[1] + 0x5] << 0x02;

R[3] ← R[2]+ Mem2[0x0A] + 0x01; 

通过这两条指令,我们应该能够为名为 IR<...> 的五个分支中的每一个分配一个十六进制数。我知道顶部的第一个分支是唯一与注册表直接相关的分支,而底部的两个分支将具有恒定值,因为它们与注册表无关。但是你们能帮我或解释一下这个语法是如何工作的吗?

【问题讨论】:

    标签: assembly x86 hex processor cpu-architecture


    【解决方案1】:

    图片中名为“IR”的块是输入(端口 D)宽度为 32 位的寄存器。所以,它的输出(端口 Q 和 ~Q)也是 32 位的。

    IR&lt;N1..N2&gt; 表示 32 位的一部分;例如IR&lt;12..0&gt; 用于编号为 0、1、2、3、4、5、6、7、8、9、10、11、12 的位; IR&lt;23..21&gt; 表示“只取 21,22,23,24 位”。

    因此,如果 IR 在某个时刻是二进制的:00010010 00110100 01010110 01111000(位从头到尾编号;十六进制为 0x12345678);它的部分是:

    • IR&lt;31..24&gt; 8 位宽值 0x12 = 00010010 - 它将进入控制电路。
    • IR&lt;23..21&gt; 3 位宽值 0x1 = 001 - 它将进入块“mux B”、端口 0 和寄存器文件的右侧部分(这是 dst=目标寄存器号)
    • IR&lt;20..18&gt; 3 位宽值 0x5 = 101 - 它将进入块“mux B”,端口 1(src1 或 src2)
    • IR&lt;17..15&gt; 3 位宽值 0x0 = 000 - 它将进入块“mux B”,端口 2(src1 或 src2)
    • IR&lt;14..13&gt; 2 位宽值 0x2 = 10 - 阻止“C”
    • IR&lt;12..0&gt; 13 位宽值 0x1678 = 10110 01111000 - 阻止“D”(这是 IMM=立即值)
    • IR&lt;23..0&gt; 是低 24 位 = 0x345678 的副本 - 用于阻止“mux A”(在 JMP 命令的情况下)

    要解决您的任务,我们应该知道命令是如何编码到 IR 中的,以及这个 CPU 的指令集是什么。这看起来像是非常简化的 MIPS 或 RISC,或者可能是 SPARC。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-29
      • 2014-01-06
      • 1970-01-01
      • 2020-04-14
      • 2017-11-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多