本节说明函数调用相关:
函数调用必须被保留的内容:
- EAX 用于保存输出值,可能在返回前被修改
- EBX 指出全局偏移表,必须保留
- ECX 保证在函数中可用
- EDX 保证在函数中可用
- ESP 指向心得堆栈地址,必须保留
- EBP 堆栈基址指针,必须保留
- EDI 局部寄存器,必须保留
- ESI 局部寄存器,必须保留
- ST 在函数中可用
C函数过程调用基本模板:
.section .text
.type func ,@function
func:
pushl %ebp
movl %esp,%ebp
subl $12,%esp
pushl %edi
pushl %esi
pushl %ebx
<function code>
popl %ebx
popl %esi
popl %edi
movl %ebp,%esp
popl %ebp
ret
本文详细介绍了C函数调用过程中必须保留的寄存器及其作用,包括EAX、EBX、ECX等,并提供了一个典型的过程调用模板,有助于理解函数调用的底层实现。
2518

被折叠的 条评论
为什么被折叠?



