继这个问题之后:使用跳转(和链接)指令的奇怪 MIPS 汇编器行为 https://stackoverflow.com/questions/3807480/weird-mips-assembler-behavior-with-jump-and-link-instruction我有一个适用于我的单周期 MIPS 项目的可用 GNU 汇编工具链(没有分支延迟槽!)。不过我真的更喜欢用 C 语言编写。从编译器生成的代码本身确实可以运行,但我每次都必须手动编辑汇编源代码,因为 GCC 由于某种原因喜欢自动重新排序分支指令本身。我不想用脚本来解决这个问题来确定何时再次将分支重新排序。
有没有可能的方法来规避这个问题?由于某种原因,GCC 生成这样的代码:
.set noreorder
...
jr $ra <-- GCC reordered for me!
addi $v0, $v0, 10 <--
...
.set reorder
我真的想给汇编器提供这样的东西:
.set noreorder
addi $v0, $v0, 10
jr $ra
通过-mips1
and -fno-delayed-branch
海湾合作委员会的标志。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)