c程序
int i = 4;
foo(i); 或者就foo(4);
汇编函数
foo:
mov esi, [esp + 4] ;这样esi的值是不是0004h呢?
我看书好像都是这么写的 但是我怎么弄也找不到这个参数
关于c调用汇编函数 汇编如何获得得到的参数呢
答案:2 悬赏:30 手机版
解决时间 2021-02-18 09:58
- 提问者网友:饥饿走向夜
- 2021-02-17 15:37
最佳答案
- 五星知识达人网友:像个废品
- 2021-02-17 17:04
参数传递规则要根据函数遵循的调用约定而定,不同的调用约定(stdcall,C约定fast call,pascal等)其不同,也可以使用自己的约定(在你非常熟悉接口或底层做了什么的情况下),
一般【esp+4】是eip的值,如果不清楚所用约定,是尝试esp+2*4,esp+3*4等,还得注意在子程序的堆栈平衡,自己参考线调用约定的内容吧
一般【esp+4】是eip的值,如果不清楚所用约定,是尝试esp+2*4,esp+3*4等,还得注意在子程序的堆栈平衡,自己参考线调用约定的内容吧
全部回答
- 1楼网友:纵马山川剑自提
- 2021-02-17 17:35
要查文档!我只晓得最基本的。在汇编中的函数如果为fun,调用的时候就用_fun;如果汇编下函数为_fun, c调用就用fun;公共变量也是这样的。函数的参数传递忘记是什么样的了!
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯