c/c++ vs2013
答案:1 悬赏:60 手机版
解决时间 2021-03-22 12:44
- 提问者网友:雪舞兮
- 2021-03-21 15:09
c/c++ vs2013
最佳答案
- 五星知识达人网友:思契十里
- 2021-03-21 16:37
直接传参数是_fastcall,不是 stdcall了,
第一个参数在ecx,第二个参数在edx,其余参数在堆栈传递
(除了fastcall,所有函数的参数都是通过堆栈压栈实现的,看汇编就知道了)追问我现在把 stdcall 改成 _fastcall了。。 程序不会报错
但是并不是我想要的结果。 我想让他输出1,2 或者2,1. test方法里该怎么写呢
追答arg[0] = 1;
arg[1] = 2; //这是命令行参数,你用它是没用的
foo没有参数,你自己把参数放堆栈上是不合适的,如果懂汇编就知道了,
函数要自己压栈返回地址,保存环境等操作,而且debug和release的函数压栈还不一样追问我已经通过内联汇编实现了我想要的功能。 不管deBug 和release 结果都一样。
谢谢你的回答
第一个参数在ecx,第二个参数在edx,其余参数在堆栈传递
(除了fastcall,所有函数的参数都是通过堆栈压栈实现的,看汇编就知道了)追问我现在把 stdcall 改成 _fastcall了。。 程序不会报错
但是并不是我想要的结果。 我想让他输出1,2 或者2,1. test方法里该怎么写呢
追答arg[0] = 1;
arg[1] = 2; //这是命令行参数,你用它是没用的
foo没有参数,你自己把参数放堆栈上是不合适的,如果懂汇编就知道了,
函数要自己压栈返回地址,保存环境等操作,而且debug和release的函数压栈还不一样追问我已经通过内联汇编实现了我想要的功能。 不管deBug 和release 结果都一样。
谢谢你的回答
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯