首页
社区
课程
招聘
[讨论]函数返回值是存储在寄存器里吗?
发表于: 2013-8-23 09:50 5098

[讨论]函数返回值是存储在寄存器里吗?

2013-8-23 09:50
5098
大家好,最近学习中发现一个小问题,向大伙咨询下,请大伙帮帮我。
我的问题是函数的返回值存储在哪儿呢?根据我观察汇编代码,发现是使用寄存器eax保存的返回值(编译环境是VC6,WINXP的系统,32位环境)。
请问函数返回值存储在eax里,跟什么相关,是谁约定的啊?
请大伙帮忙啦,谢谢。

[课程]FART 脱壳王!加量不加价!FART作者讲授!

收藏
免费 0
支持
分享
最新回复 (10)
雪    币: 185
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
函数调用约定。。。  说白了就是编译器的约定。
2013-8-23 10:09
0
雪    币: 45
活跃值: (55)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
3
没什么好问的吧,约定俗成了,就是eax,不然就是在参数返回
2013-8-23 10:21
0
雪    币: 480
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
无论什么编译器,都是eax吗?
2013-8-23 10:26
0
雪    币: 227
活跃值: (66)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
5
大多数是放在eax里

但如果返回的类型是用户定义结构,就会把结果拷贝到栈里
2013-8-23 12:17
0
雪    币: 480
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
我明白啦,谢谢啦
2013-8-23 13:14
0
雪    币: 55
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
如果返回值是浮点数就在st0
2013-8-23 16:33
0
雪    币: 77
活跃值: (48)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
当然是inter公司哟,你这问题就像在问人怎么会吃饭,是谁规定的必须吃饭,不吃饭行吗
2013-8-23 16:35
0
雪    币: 39
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
用户自定义结构的返回数据也可能缓存在数据区,不定在栈里吧,
2013-8-23 19:36
0
雪    币: 480
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
对,这种情况也存在。比如,我定义一个全局变量,把返回值赋值给这个全局变量,然后return这个全局变量,这样就行了,哈哈哈
2013-8-25 09:01
0
雪    币: 480
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
感谢大伙的答复,我已经搞明白这个问题啦。最近阅读张银奎的软件调试,在第22张的栈和函数调用里,找到了答案,哈哈
2013-8-28 11:02
0
游客
登录 | 注册 方可回帖
返回
//