我想知道Linux内核在执行系统调用时如何知道在哪些寄存器中查找函数参数。例如:我从程序集中调用写系统调用。参数存储在rdi、rsi和rdx中。然后内核调用write函数,这个函数看起来像write(fd,buf,len(。
但是内核怎么知道fd存储在rdi中,buf存储在rsi中,len存储在rdx中呢?实施情况如何?内核中是否有某种映射可以初始化这些寄存器中的参数?
我想我错过了什么。也许它甚至与这些寄存器无关?我希望得到一些帮助:(
执行系统调用时,参数存储在x86_64调用约定中定义的寄存器中。在*nix系统上,这些很可能是SystemV。简单C函数的参数也存储在那里,因为编译器也遵循调用约定。因此,不需要进行进一步的处理就可以将参数位置映射到C调用例程。