2013-02-10 5 views
0

Я пишу какой-то самомодифицирующий код, и я хочу вызвать функцию C (назовите его foo) из MIPS.При вызове на C из MIPS мы используем JR или JALR?

Я загрузил mem add foo, &foo в $t1. Теперь я jr/jalr $t1.

Will C установить $ra как мой текущий PC (+8) (перед прыжком), что позволяет мне использовать JR или мне придется JALR вместо (то есть, заботиться о нем, потому что C не будет)?

Я не могу проверить это прямо сейчас, поскольку я отлаживаю свои макросы (для Mnemonics MIPS). Я, должно быть, перепутал, потому что я продолжаю получать незаконные ошибки.

+0

Просто убедитесь, что ваш C скомпилирован как MIPS правильно? –

+0

Определенно. –

+0

Какой компилятор вы используете? –

ответ

1

Вы должны использовать JALR. Как могла функция C знать, как установить $ra для вас?

+0

Хорошо, спасибо –