Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
什么是;将立即数扩展到32位“;在MIPS中是什么意思?_Mips_Cpu Architecture_Machine Code_Sign Extension_Immediate Operand - Fatal编程技术网

什么是;将立即数扩展到32位“;在MIPS中是什么意思?

什么是;将立即数扩展到32位“;在MIPS中是什么意思?,mips,cpu-architecture,machine-code,sign-extension,immediate-operand,Mips,Cpu Architecture,Machine Code,Sign Extension,Immediate Operand,我正在阅读MIPS数据路径中的指令解码(ID)阶段,我得到了以下引用:“一旦操作数已知,读取实际数据(从寄存器)或将数据扩展到32位(立即)。” 有人能解释一下“将数据扩展到32位(立即)”部分是什么意思吗?我知道寄存器都包含32位,我知道什么是立即数。我只是不明白为什么需要将立即数从26位扩展到32位 谢谢 26位直接指令仅在跳转指令中,并且不会将符号或零扩展到32位,因为它们不是要加/减的位移 具有16位立即数的I型指令是不同的 addi/addiu立即数是符号扩展的(通过将立即数的顶部/

我正在阅读MIPS数据路径中的指令解码(ID)阶段,我得到了以下引用:“一旦操作数已知,读取实际数据(从寄存器)或将数据扩展到32位(立即)。”

有人能解释一下“将数据扩展到32位(立即)”部分是什么意思吗?我知道寄存器都包含32位,我知道什么是立即数。我只是不明白为什么需要将立即数从26位扩展到32位


谢谢

26位直接指令仅在跳转指令中,并且不会将符号或零扩展到32位,因为它们不是要加/减的位移

具有16位立即数的I型指令是不同的

  • addi
    /
    addiu
    立即数是符号扩展的(通过将立即数的顶部/符号位复制到所有更高的位)。
    这允许2的补码从
    -2^15
    开始<代码>+2^15-1待编码。

    (0xFFFF8000到0x00007FFF)
  • ori
    /
    andi
    /
    xori
    布尔立即数是零扩展的(通过将所有高位设置为零)
    这允许
    0.中的无符号/2的补码。。2^16-1要编码的

    (0x00000000到0x0000FFFF)
有关其他说明,请参阅此部分,其中对显示016 | |[I15..0]的零扩展指令或显示[I15]16 | |[I15..0]的符号扩展指令进行了分解

这使得使用16位立即数作为32位二进制操作的输入成为可能,该操作仅适用于2个等宽输入。(在一个简单的经典MIPS管道中,解码阶段从寄存器和/或立即数获取操作数。寄存器输入总是32位的,因此ALU连接到32位输入。将立即数扩展到32位意味着CPU的其余部分不必关心数据是来自立即数还是来自寄存器。)

也将符号扩展

  • lw
    /
    sw
    和其他加载/存储指令使用的reg+imm16寻址模式中的偏移量

  • 相对分支(
    PC+=imm16在32位CPU上,您执行的大多数操作(如加、减、解引用指针)是用32位数字完成的。当你有一个位数较少的数字时,当你想在其中一个运算中使用该数字时,你需要以某种方式决定其他的位数。决定这些新的高位是什么的行为称为“扩展”


    假设你只是在做一个标准的零扩展或符号扩展,扩展是非常便宜的。但是,它确实需要一些电路,所以有必要在MIPS数据路径的描述中提到它。

    也可以使用符号扩展:slti[u]即时。还有带有即时的陷阱指令,甚至更多的内容在MIPS64上进行了符号扩展(大多数32位ALU指令和一些更新的仅限MIPS64的指令)。