Assembly CPU寄存器的正确使用——调度概念

Assembly CPU寄存器的正确使用——调度概念,assembly,mips,scheduling,cpu-registers,Assembly,Mips,Scheduling,Cpu Registers,警告:我的问题更多的是理论性的,而不是实践性的。不幸的是,我在谷歌上没能找到多少信息 在开始一些基本的MIPS32汇编编程之后,出于教育目的,我似乎无法理解一些东西: 如果有人在MIPS assembly中编写程序,并且该程序在MIPS多任务操作系统上运行,进程调度如何工作 1) 例如,在多任务环境中,当必须切换到另一个进程时,操作系统是否将寄存器的值存储在内存中的某个位置,然后擦除寄存器以便下一个进程可以使用它们? 2) 寄存器的适当用途是什么?所有临时寄存器($t0-$t7)是否随时由我处理

警告:我的问题更多的是理论性的,而不是实践性的。不幸的是,我在谷歌上没能找到多少信息

在开始一些基本的MIPS32汇编编程之后,出于教育目的,我似乎无法理解一些东西: 如果有人在MIPS assembly中编写程序,并且该程序在MIPS多任务操作系统上运行,进程调度如何工作

1) 例如,在多任务环境中,当必须切换到另一个进程时,操作系统是否将寄存器的值存储在内存中的某个位置,然后擦除寄存器以便下一个进程可以使用它们? 2) 寄存器的适当用途是什么?所有临时寄存器($t0-$t7)是否随时由我处理?我可以随时使用其他寄存器吗?

对于1),是的,当从进程A切换到进程B时,操作系统必须将A的寄存器存储在内存中,并从类似的存储位置恢复B的寄存器

因此,进程有一种错觉,即它完全控制处理器的完整寄存器集;进程可以随意使用MIPS上的所有通用寄存器(为内核保留的寄存器26和27除外)。更复杂的约定是什么寄存器是临时值,这样一个进程中的函数就可以正确地协作,传递值,而不是踩在彼此的寄存器上

有关ABI的详细信息,请参见:

好问题,我想我知道答案,但我会坐下来看看我的汇编类是十年前的。谢谢你的回答和mips寄存器参考,这很有意义。您是否也可以参考一些流程安排材料?@EliasBats:切换流程的基本概念是。操作系统通常控制正在运行的进程。实际的进程调度(决定运行哪个进程)是一个巨大的领域,最简单的方法之一是。对不起,所有的维基百科链接,主题都很一般,这可能是最好的开始。上下文切换是我要找的。现在我已经在谷歌上搜索过了,有几十篇有用的文章和教科书,谢谢。