高级语言反汇编程序的函数调用过程.docVIP

  • 0
  • 0
  • 约3.18千字
  • 约 3页
  • 2024-02-23 发布于浙江
  • 举报

高级语言反汇编程序的函数调用过程.doc

高级语言反汇编程序的函数调用过程

摘要:本文说明高级语言编译成汇编语言后,高级语言中函数调用的汇编程序过程。

正文:高级语言编译成汇编程序以后,在高级语言中的函数调用的汇编程序过程如下:

1.将函数参数入栈,第一个参数在栈顶,最后一个参数在栈底。

2.执行CALL指令,调用该函数,进入该函数代码空间。

a.执行CALL指令,将CALL指令下一行代码的地址入栈。

b.进入函数代码空间后,将基址指针EBP入栈,然后让基址指针EBP指向当前堆栈栈顶,并使用它访问存在堆栈中的函数输入参数及堆栈中的其他数据。

c.堆栈指针ESP减少一个值,如44H,向上移动一个距离,留出一个空间给该函数作为临时存储区。

{

???//以上准备工作做好后,函数正式被执行,如下所示。

???d.将其他指针或寄存器中的值入栈,以便在函数中使用这些寄存器。

???e.执行代码。

???f.执行return()返回执行结果,将要返回的值存入EAX中。

???g.步骤2.d中的指针出栈。

}

h.将EBP的值传给堆栈指针ESP,使ESP复原为2.c之前的值。此时进入函数时EBP的值在栈顶。

i.基址指针EBP出栈,复原为2.b之前的EBP的值。

j.执行RET指令,“调用函数”的地址出栈,本函数返回到CALL指令的下一行。

3.函数返回到CALL指令下一行,将堆栈指针加一个数值,以使堆栈指针恢复到以上步骤1执

文档评论(0)

1亿VIP精品文档

相关文档