如何解决Linux内核如何确定函数参数在CPU寄存器中的位置?
我想知道Linux内核如何知道在执行系统调用时在哪个寄存器中查找函数参数。例如:我从程序集调用写系统调用。参数存储在rdi,rsi和rdx中。然后内核调用写函数,看起来像write(fd,buf,len)。
但是内核如何知道fd存储在rdi中,buf存储在rsi中,len存储在rdx中? 如何执行?内核中是否存在某种映射可以初始化这些寄存器中的参数?
我想我错过了一些东西。也许甚至与这些寄存器都没有关系? 我会感谢您的帮助:)
解决方法
执行系统调用时,参数将按照x86_64调用约定中的定义存储在寄存器中。在* nix系统上,这些很可能是SystemV。一个简单的C函数的参数也存储在这里,因为编译器还遵循调用约定。因此,无需进行进一步处理即可将参数位置映射到C调用例程。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。