警告:我的问题更具理论性和实用性。不幸的是,我没有设法发现很多信息。
开始一些基本的MIPS32汇编编程,出于教育目的,我似乎无法理解: 如果有人在MIPS程序集中编写程序,并且该程序在MIPS 多任务操作系统上运行,进程调度如何工作?
1)例如,在多任务环境中,当必须切换到另一个进程时,OS是否将寄存器的值存储在内存中的某个位置,然后擦除寄存器以便下一个进程可以使用它们? 2)寄存器的适当用途是什么?我可以随时使用所有临时寄存器($ t0- $ t7)吗?我可以随时使用其他一些寄存器吗?
答案 0 :(得分:2)
对于1),是的,当从进程A切换到进程B时,OS必须将A寄存器存储在存储器中,并且它从类似的存储位置恢复B的寄存器。
正因为如此,一个过程的幻觉是它完全控制了处理器的完整寄存器组; MIPS上的所有通用寄存器都可以被它想要的进程使用(除了为内核保留的寄存器26和27)。寄存器对于临时值的更复杂的约定是这样的,即一个进程中的函数可以正确地协作,传递值而不是相互踩踏。
关于ABI的坚韧细节可以在这里找到: http://techpubs.sgi.com/library/dynaweb_docs/0640/SGI_Developer/books/Mpro_n32_ABI/sgi_html/ch02.html