汇编语言的过程调与用c语言的函数调用.docxVIP

  • 6
  • 0
  • 约4千字
  • 约 8页
  • 2017-02-09 发布于北京
  • 举报

汇编语言的过程调与用c语言的函数调用.docx

汇编语言的过程调与用c语言的函数调用

汇编语言的过程调用与c语言的函数调用 姓名:孙贵森 学号:201212301118汇编语言的过程调用,如果需要传递参数,一般有2种方法,通过寄存器来“传递”,或是通过参数来传递。(还有将所有参数制成参数列表并压栈的传递方法,但较少用。)通过寄存器来“传递”,不是真正意义上的传递,其只不过是事先在几个有限的CPU寄存器中设置相应的值后,再调用过程,过程再直接读取这些寄存器的内容。可想而知,此法犹如C语言中的全局变量,极易感染。而如果通过参数来传递,又不得不面临手工维护堆栈框架(stack frame)的重担。堆栈框架动态地存放着参数、调用过程的返回地址、过程局部变量、过程内的压栈等内容,也是不好对付的。一般情况下,一个普通的过程可能如下编写: Sum PROC? push ebp? mov ebp, esp? .....? pop ebp? retSum ENDP作为遵从C调用约定(Calling Convention)调用者,则需这样调用上述过程:push 5?; push 8; call Sum ; add esp, 4 * 2; 而如果遵从STDCALL调用约定,则:Sum PROC? push ebp? mov ebp, esp? ......? mov eax, [ebp + 12] ;? add eax, [ebp + 8];? ......? pop ebp? ret

文档评论(0)

1亿VIP精品文档

相关文档