constants - 在 MIPS 中移动符号扩展常量

标签 constants mips bit-shift 16-bit sign-extension

为什么我们在 MIPS 的分支指令中将符号扩展的 16 位常量移位 2?我对这个想法感到困惑。这种移位对符号扩展的 16 位常量有什么好处。这是图片:

enter image description here

问候

最佳答案

MIPS 指令是 32 位 = 4 字节,因此分支偏移指定为 4 的倍数,即 1 = 4 字节的分支偏移。与以字节为单位指定偏移量相比,这实现了更大范围的分支偏移量(因为会有两个冗余位)。当然,左移 2 与乘以 4 相同。

关于constants - 在 MIPS 中移动符号扩展常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13761089/

相关文章:

assembly - x86 RCL/RCR 指令的实际应用是什么?

c++ - 杀死魔数(Magic Number): "const int" vs "constexpr int" (or is there no difference in the end)

c - printf 无法在屏幕上正确打印 float/double

java - 位移位 - 为什么此代码使用 24、16 和 8 右移?

mips - 为什么启动系统时要加载两个版本的u-boot?

assembly - 在MIPS中,有符号加法、无符号加法、有符号减法和无符号减法有什么区别?

go - 位掩码 int64 中的多个值

c - Scanf 在 const char 数组中占用的字符不超过 4 个 - C

c - strtol、strtod 不安全吗?

c++ - 如何检查 const char* 是否以特定字符串开头? (C++)