assembly - MIPS 什么十六进制字编码分支指令?

标签 assembly branch mips

据我了解,该指令中的分支是第一行,可以表示为十六进制值“10b8ffff”。然而显然这不是正确的答案。

  • 分支指令的编码是否也依赖于 MIPS 代码的其余部分?

  • 当我翻译第一行时,我只是得到了不正确的十六进制值吗?

这是 MIPS 代码:

    beq  $5, $24, L1
    slli $8, $7, 2
    add  $8, $8, $15
    lw   $8, 0($8)
    sw   $8, 0($23)
 L1: addi $7, $7, 1

最佳答案

第一部分0x10b8似乎是正确的。我相信问题是你如何到达 0xFFFF 的偏移量。请注意指令引用中的这一点,其中 beq $s, $t, offset:

if $s == $t advance_pc (offset << 2)); else advance_pc (4);

您是说 L1 仅相距 5 个指令,其偏移量为 0xFFFF,然后将其左移两次以确定正确的位置。由于这看起来“赋值”,我将让您根据指令大小找出正确的值。

关于assembly - MIPS 什么十六进制字编码分支指令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36346784/

相关文章:

assembly - 如何统计汇编代码的位数?

C在堆栈上为数组分配的空间大小

version-control - TFS:跨团队项目共享脚本的分支注意事项

git - 用什么方式和git merge ?

crash - vo,ao指令崩溃

c++ - 汇编代码的输出 - 与 add 混淆?

assembly - 信号名称程序集上方有横线是什么意思

c - 在 Visual Studio 2013 中调用 malloc 时 64 位编译器生成的奇怪代码

branch - 如何使用非标准 svn 存储库布局的 git-svn 访问 svn 分支?

java - 使用高级编程语言的简化 MIPS CPU