1. 系统调用(system call)中的参数传递
比如对于 C 语言库函数 read 的系统调用:
result = read(fd, buffer, nbytes);
read 系统调用的参数被压入到栈中,即参数传递是通过栈来进行。但这并非唯一的参数传递方法。事实上,这还算不上效率最高的传递方法。效率最高的方法是将参数存放在指定的寄存器里面。寄存器的访问速度显然高于栈,故这种参数传递可以提升系统调用执行的效率。
在 x64 体系结构中,最前面的 8 个参数由寄存器传递。只有超过 8 个参数时,后面的参数才通过栈来传递。