函数调用规范
发布时间
阅读量:
阅读量
函数调用约定解析
函数调用约定是指在调用函数过程中,对于参数传递方式所达成的一种规范。
一、系统函数(内核接口)
1、x86架构32位系统调用
通过寄存器实现参数传递,其中eax寄存器用于存储syscall_number(系统函数编号),而ebx、ecx、edx、edi、esi、ebp这六个寄存器则负责将六个参数传递至系统调用。系统调用执行后的结果将被保存在eax寄存器中。
2、x86架构64位系统调用
通过寄存器实现参数传递,避免直接从栈中获取任何参数,此时eax仍用于表示系统调用编号,所涉及的寄存器包括rdi、rsi、rdx、r10、r8以及r9。系统调用操作是借助syscall指令来执行的。系统调用的返回结果被存储于eax寄存器之中。
二、用户函数设计与实现
1、x86架构32位函数调用
通过栈实现参数传递 ,鉴于参数个数存在不确定性,参数不再采用寄存器方式进行传递,而是按照从最后一个参数开始依次压入栈中的方式处理,直至所有参数均被压入栈中,随后通过执行call指令完成函数的调用过程。
2、x86架构64位系统调用
寄存器与栈协同实现参数传递,由于内存的读写效率存在瓶颈,因此采用寄存器与栈相结合的方式完成参数的传输任务。**当参数类型为MEMORY时,通过
全部评论 (0)
还没有任何评论哟~
