【发布时间】:2011-05-01 20:20:45
【问题描述】:
跟随这个问题: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
【问题讨论】: