Как отключить автоматическое изменение порядка инструкций MIPS-GCC?

После этого вопроса: Странное поведение ассемблера 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

6
задан Community 23 May 2017 в 12:09
поделиться