c - 当从 MIPS 调用 C 时,我们使用 JR 还是 JALR?

标签 c mips calling-convention mips32

我正在编写一些自修改代码,我想从 MIPS 调用 C 函数(将其称为 foo)。

我已将 foo&foo 的 mem add 加载到 $t1 中。现在我jr/jalr $t1

C 会将 $ra 设置为我当前的 PC(+8)(跳转前),允许我使用 JR 还是我必须 JALR 相反(即,照顾它,因为 C 不会)?

我现在无法测试这个,因为我正在调试我的宏(用于 MIPS 助记符)。我肯定搞砸了一些事情,因为我不断收到非法指令错误。

最佳答案

您必须使用JALR。 C 函数怎么可能知道如何为您设置 $ra

关于c - 当从 MIPS 调用 C 时,我们使用 JR 还是 JALR?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14793778/

相关文章:

c - 嗨,我有一个 C 编程问题。我想知道两者之间的区别以及一个比另一个有用的地方?

java - 创建 MIPS 汇编器

linux - MIPS交叉编译错误: illegal instruction

c++ - 在 Visual Studio 中使用 __asm 返回 float 堆栈中的 double 值

c++ - MSVC 和 gcc 之间的调用约定

C++:通过引用或值传递 Vector 结构?

.net - .Net windows 程序员有什么理由需要学习 C 或 C++ 了吗?

c++ - 从字节数组将 XML 加载到 C++ MSXML

c - 写入和读取文件的问题

mips 打印字符