- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
假设我有以下 C 代码:
int array[10] = {10, 5, 2, 20, 20, -5, 3, 19, 9, 1};
void main(void)
{
printArray(0, 9);
}
void printArray(int startIndex, int endIndex)
{
// prints out the numbers in the order starting from startIndex
// and ending at endIndex
}
我会这样将此 C 代码转换为 MIPS:
.text
.globl main
main:
# ...
.text
.globl printArray
printArray:
# play with registers
print:
# used to loop
我很困惑。在该 MIPS 代码中,main
和 printArray
是 global
,相当于 C 函数,对吗?但是 print 也会是吗?如果不是,print
在 C 语言中是否有等价物?
最佳答案
变量和函数作用域在汇编中并不是真正的“东西”。 .globl
是对汇编程序的指令,但它所指的目标仍然只是内存位置的标签。因此,当您说“[main
和 printArray
] 是否等同于 C 函数?”时,答案是肯定的,也不是。
是的,您可以跳转或分支到由main:
或printArray:
(或print:
)标记的内存地址。所以在那种情况下,它有点像在高级语言中调用函数。
不,它并不真正“等同于”C 函数,因为它没有对参数和返回值的任何自动处理。您必须在寄存器中传递参数,并且必须在寄存器中返回值 - 您甚至必须使用寄存器 ($ra
) 返回调用函数。并且调用者的寄存器没有任何自动保存 - 你必须将它们压入堆栈并弹出它们,否则调用函数将丢失它放入其中的任何内容。
抱歉,如果这比您需要的更基本 - 希望对您有所帮助!
关于c - MIPS 子例程与 C 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20083689/
我最近购买了《C 编程语言》并尝试了 Ex 1-8这是代码 #include #include #include /* * */ int main() { int nl,nt,nb;
早上好!我有一个变量“var”,可能为 0。我检查该变量是否为空,如果不是,我将该变量保存在 php session 中,然后调用另一个页面。在这个新页面中,我检查我创建的 session 是否为空,
我正在努力完成 Learn Python the Hard Way ex.25,但我无法理解某些事情。这是脚本: def break_words(stuff): """this functio
我是一名优秀的程序员,十分优秀!