永发信息网

关于c调用汇编函数 汇编如何获得得到的参数呢

答案:2  悬赏:30  手机版
解决时间 2021-02-18 09:58
  • 提问者网友:饥饿走向夜
  • 2021-02-17 15:37
c程序
int i = 4;

foo(i); 或者就foo(4);

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