请问c call,stdcall pascal call 是怎么定义的,有什么区别。
请问c call,stdcall pascal call 是怎么定义的,有什么区别。
楼主()2001-10-29 09:49:53 在 C/C++ / C语言 提问stdcall进行寄存器保护吗? 问题点数:0、回复次数:3Top
1 楼gogocat()回复于 2001-10-29 10:06:49 得分 0
有不同,首先有两种常用调用规则,一种是c语言的规则,一种是pascal规则:
c规则的主要特点是,函数参数从右向左压入堆栈;
当函数处理完之后,被调用函数清理堆栈;
pascal不同,函数参数从左向右压入堆栈;
调用者清理堆栈。
stdcall就是c call
明白了吗,当然还有些细节,比如参数名字的变化等,你可以看看有关资料。Top
2 楼symouse(耗子)回复于 2001-10-29 10:28:44 得分 0
aaTop
3 楼symouse(耗子)回复于 2001-10-29 10:35:42 得分 0
你说的有问题和nasm的调用宏的意思不一样,它是这样写的:
ccall FuncName, param1, param2, param 3... ;C: Last-1st, stack clean
pcall FuncName, param1, param2, param 3... ;Pascal: 1st-Last, no clean
stdcall FuncName, param1, param2, param 3... ;StdCall: last-1st, no clean
fastcall FuncName, param1, param2, param 3... ;FastCall: registers/stack
顺便问一下,win32api是stdcall吧?那么win32api的函数是否对通用寄存器进行保护???
给我的感觉是没有保护,似乎改变ebx,edi,esi的还没发现,但其他的寄存器就有所改变。Top
-
相关文章
2秒记住本站域名
玩过泡泡龙吗?Readygo?Go! 再加上.Com.Cn的后缀,那就是大名小顶的readygo.com.cn
