谈到
函数,一般首先要分析一下各种函数
调用约定,比如_cdecl、 _stdcall等。这两种调用
约定调用时都是最右侧的参数先进栈,栈最上面的就是函数的第一个参数。不同之处在于,_cdecl由调用者清理参数占用的 栈空间,而_stdcall由被调用者清理参数占用的栈空间。很明显,对于接受可变参数的函数,如printf,被调用函数是无法知道到底有几个参数的, 所以只能采用由调用者清理参数栈的方式。_stdcall调用方式生成的代码会小一点。
下面的分析采用VC++6.0进行。
一.函数内部的汇编代码
view plain
评论列表(0条)