在Linux / MIPS上,哪些寄存器保存在系统调用 (不是函数调用,通过syscall指令实际往返于kernelspace)?
从arch/mips/include/asm/stackframe.h头文件中的RESTORE_SOMEmacros看来,它看起来像r2-r7,r25,r28和r31被恢复,当然被调用者保存的寄存器被调用约定即使在内核空间中(任何使用它们的内核空间函数都会在对它们进行破坏之前自行保存)。 它是否正确?
当然,至less有一对(r2和r7)的系统调用的结果会导致它们的值被破坏。
将数组传递给x86 asm中的函数
使用寄存器而不保存它们? (部件)
Windows如何执行汇编程序?
x64 memset核心,是否传递缓冲区地址被截断?
内联assembly可以closures保护模式吗?
如何从汇编(从Windows设备驱动程序)更改cpu频率
将值插入数组并显示,nasm
如何避免不符合缓冲区的stdininput发送到Linux 64位Intel(x86-64)程序集的shell中
在Linux / MIPS系统调用中,查看这个链接的描述(我只知道内核源码本身以外的唯一一个)。
我想MIPS ABI公约应该在系统调用之前准确地定义哪些寄存器包含系统调用号和参数,以及在系统调用之后哪些寄存器包含结果(包括错误代码)。 通常系统调用不使用堆栈,只有注册。
“按照调用约定,系统调用保留了o32定义为存活函数调用的那些寄存器的值。” ( 见MIPS运行 ,379页)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。