Advertisement

函数调用规范

阅读量:

函数调用约定解析

函数调用约定是指在调用函数过程中,对于参数传递方式所达成的一种规范。

一、系统函数(内核接口)

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)

还没有任何评论哟~