代码之家  ›  专栏  ›  技术社区  ›  Maister

如何关闭MIPS-GCC自动指令重排序?

  •  6
  • Maister  · 技术社区  · 14 年前

    在这个问题之后: Weird MIPS assembler behavior with jump (and link) instruction

    有没有可能绕过这一点?GCC生成这样的代码是有原因的:

    .set noreorder
    ...
    jr $ra <-- GCC reordered for me!
    addi $v0, $v0, 10 <--
    ...
    .set reorder
    

    我真的想给汇编程序提供如下内容:

    .set noreorder
    addi $v0, $v0, 10
    jr $ra
    
    2 回复  |  直到 7 年前
        1
  •  3
  •   Igor Skochinsky    14 年前

    我不认为有可能关闭它,因为延迟插槽存在于所有的MIPS变种。我认为在模拟器中实现延迟时隙会更好。这也将使它更接近真正的硬件。
    除此之外,您可能可以修补gcc以停止尝试填充延迟时段。

        2
  •  8
  •   Kaalras Sly1024    12 年前

    通过 -mips1 -fno-delayed-branch