首页
社区
课程
招聘
未解决 [求助]为什么没有return 却能将add的值返回?
发表于: 2019-3-13 22:15 1575

未解决 [求助]为什么没有return 却能将add的值返回?

2019-3-13 22:15
1575
int add (int a,int b)
{
    int c;
    __asm
    {
        mov eax,a
        mov ebx,b
        add eax,3
        sub ebx,4
        add eax,ebx
        mov c,eax
    }
}

int _tmain(int argc, _TCHAR* argv[])
{
    printf("%d\n",add(3,5));
return 0;
}


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 3502
活跃值: (1498)
能力值: ( LV15,RANK:1057 )
在线值:
发帖
回帖
粉丝
2
程序默认是 eax 返回值,return 返回值,你去看汇编就是把值传给 eax,再 retn,你代码本身最后结果就是 eax,你改个别的作为最后结果就不一样了
2019-3-13 22:20
1
雪    币: 5514
活跃值: (2254)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
kkHAIKE 程序默认是 eax 返回值,return 返回值,你去看汇编就是把值传给 eax,再 retn,你代码本身最后结果就是 eax,你改个别的作为最后结果就不一样了
老师,在内联汇编里,为什么有些指令不能使用,哪里有全一点的,讲内存汇编的呢?
2019-3-13 22:52
1
雪    币: 95
活跃值: (144)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
4
因为有push ** 和ret尾巴~~
2019-3-14 00:54
1
雪    币: 4506
活跃值: (4483)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
编译器自动给你加了 return  直接拖到OD里面 或者  IDE 调试看反汇编窗口
2019-3-14 09:33
1
雪    币: 924
活跃值: (2030)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
6
声明成为裸函数编译器才不会帮你平栈ret
2019-3-14 10:01
1
游客
登录 | 注册 方可回帖
返回
//