После этого вопроса: Странное поведение ассемблера MIPS с инструкцией перехода (и ссылки) У меня есть рабочий инструментарий сборки GNU для моего проекта MIPS с одним циклом (без слота задержки ветвления!). Я действительно предпочел бы написать на 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