以实例分析 INVOKE 和 call区别

作者在 2008-11-01 13:20:36 发布以下内容
http://bbs.bccn.net/thread-238091-1-1.html

INVOKE是编译器支持的伪指令,会检查参数.  CALL会直接去栈里取参.   INVOKE最后也会变成 PUSH PUSH ... CALL 的形式.

TASM5.0:
extrn ExitProcess:proc
call    ExitProcess,0
:0040103C 6A00           push   00000000
:0040103E E8B5020000     call   KERNEL32.ExitProcess

MASM32:
invoke    ExitProcess,NULL
:00401026 6A00           push   00000000
:00401028 E801000000     call   KERNEL32.ExitProcess

本质一样,在MASM32下还是用invoke保险。但是TASM下缺失参数一样会出错的。
汇编 | 阅读 5939 次
文章评论,共1条
vfdff(作者)
2008-11-09 05:37
1
jump 和call 的区别<br />
jump是跳转到某处开始执行下面的指令,而call是调用过程,系统会先将寄存器的值放入<br />
<br />
堆栈,等调用返回时再将堆栈里的值放回寄存器
游客请输入验证码
浏览1936603次