挂海论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
 友情提示:文字/图片广告均非网站意见,请担保交易勿直接付款,由此产生的责任自负
玩游戏来117游戏网(H5不下载也能玩手游传奇,吃鸡,竞技都有)不懂社区·好资源不错过·各位资源站大佬欢迎来采集搬运IOS签名/udid证书出售/送证书加群1040456405 ██【我要租此广告位】██
... .
12
返回列表 发新帖
楼主: juanzi
打印 上一主题 下一主题

[讨论交流] 怎样判断 一个CALL 需要几个参数呢

[复制链接]
3正式会员
212/300

212

积分

89

主题

4

听众
已帮网友解决0 个问题
好评
0
贡献
123
海币
6092
交易币
0
11#
发表于 2015-4-13 16:34:23 | 只看该作者
提醒:若下载的软件是收费的"请不要付款",可能是骗子,请立即联系本站举报,执意要付款被骗后本站概不负责。(任何交易请走第三方中介,请勿直接付款交易以免被骗!切记).

友情提示:文字/图片广告均非本站意见,请担保交易勿直接付款,由此产生的责任自负!!!↑↑


这个要看实际函数的调用约定方式,通常的stdcall,cdecl,还有参数的次序和约定也有关,具体可以baidu下.
常见的stdcall约定是函数内部负责清理栈,也就是上面说的 看RET  0xNum ,  0xNum / 0x04就是push进来的参数个数.
象cdecl他是函数完成调用负责清理栈,也就是上面说的add esp,  0xNum,同理 0xNum / 0x04就是push进来的参数个数.这个为什么要这样的做很简单,不是优化原因,举个例子,例如泛型的参数,实际函数并不知道会用到多少个参数,所以要函数调用完成后清理栈,
还有特殊的约定,象pascal,主要是delphi写的游戏,传奇这类老游戏会碰到,他是第1个参数 放在EAX第二个参数 放在EDX,第3个参数放在ECX,第4个参数开始PUSH,依次类推.
其他就不展开了

1

积分

0

主题

4

听众
已帮网友解决0 个问题
好评
0
贡献
1
海币
0
交易币
0
12#
发表于 2015-4-14 18:14:44 | 只看该作者
感谢楼主的无私的分享与奉献.

9

积分

8

主题

3

听众
已帮网友解决0 个问题
好评
0
贡献
1
海币
340
交易币
0
13#
发表于 2015-4-15 06:10:46 | 只看该作者
我飘过一下 赚一个海币
4中级会员
533/600

533

积分

164

主题

9

听众
已帮网友解决0 个问题
好评
0
贡献
369
海币
3270
交易币
0
14#
发表于 2015-4-16 22:40:25 | 只看该作者
楼主很给力哈,在此代表需要的人对楼主表示无尽的感激之情
4中级会员
356/600

356

积分

106

主题

9

听众
已帮网友解决0 个问题
好评
0
贡献
250
海币
5042
交易币
0
15#
发表于 2015-4-29 09:25:57 | 只看该作者
好腻害的样子
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

免责声明|Archiver|手机版|小黑屋|挂海论坛

GMT+8, 2025-4-5 03:24 , Processed in 0.114245 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.2

本站资源来自互联网用户收集发布,如有侵权请邮件与我们联系处理。xhzlw@foxmail.com

快速回复 返回顶部 返回列表