从汇编角度看函数

1. 函数简介

在代码开发过程中,函数是一个必然存在的,它是一个固定的一个程序段,或称其为一个子程序,它在可以实现固定运算功能的同时还带有一入口和一个出口,所谓的入口,就是函数所带的各个参数,我们可以通过这个入口,把函数的参数值代入子程序,供计算机处理,所谓出口,就是指函数的计算结果,也称为返回值,在计算机求得之后,由此口带回给调用它的程序。

函数主要需要关注两个方向问题:函数参数,函数返回值

2. 从汇编中看函数

函数功能的实现部分

PUSH EBP				提升堆栈,为函数执行提供空间			
MOV EBP,ESP							
SUB ESP,20							
PUSH EBX				保留现场:函数在执行的时候会用到一些寄存器,但这些寄存器中的值很可能会被后面的			
PUSH ESI				程序用到,所以要先存储到内存中			
PUSH EDI							
LEA EDI,DWORD PTR SS:[EBP-20]				向分配的空间填充数据			
MOV ECX,16							
MOV EAX,CCCCCCCC							
REP STOS DWORD PTR ES:[EDI]							
MOV EAX,DWORD PTR SS:[EBP+4]				该函数的功能			
ADD EAX,DWORD PTR SS:[EBP+C]							
POP EDI									恢复现场			
POP ESI							
POP EBX							
MOV ESP,EBP							降低堆栈			
POP EBP								恢复栈底数据			
RETN								函数执行完毕,返回到调用处			
							

函数的调用部分

	PUSH 8				函数的参数	
	PUSH 1					
	CALL 0040200A		调用函数	
							

猜你喜欢

转载自blog.csdn.net/c_kongfei/article/details/119206252