我们很清楚有三种类型的中断:
因此系统调用是软件中断。二进制形式的MIPS SYSCALL指令是 00000000000000000000000000001100
当cpu 获取此指令并执行时会发生什么。这个指令在某些寄存器之前传递的参数在这里很重要,关键问题是这个指令本身是什么,他的工作是什么,它在cpu中是如何工作的。
只运行此指令会对机器的架构状态产生什么影响?
这意味着哪个寄存器值受此系统调用(指令)影响,它标记它打开,它完成其工作的步数,如果它跳转到另一个内存位置(如中断向量表)它是怎么回事找到那些内存位置的地址。
答案 0 :(得分:1)
这可能取决于您正在谈论的MIPS处理器,但是对于最新版本的MIPS32架构,SYSCALL指令会导致系统调用异常,该异常向量通过执行位于异常向量的偏移量0x180处的代码来处理基础。
具体而言,在实现MIPS32 ISA版本6的CPU上发生的情况如下:
名称Status,EPC,BadInstr,BadInstrP,SRSCtl,Cause和EBase都是协处理器0(CP0)寄存器,因此您无法在大多数MIPS文档中找到它们。句点(。)后面的后缀表示这些寄存器的子字段。
有关详细信息,请阅读MIPS Architecture For Programmers Vol. III: MIPS32/microMIPS32 Privileged Resource Architecture手册。