首页
社区
课程
招聘
[求助]X86中,call某函数时,那些寄存器的值返回时不可改变?
发表于: 2013-12-22 12:11 5327

[求助]X86中,call某函数时,那些寄存器的值返回时不可改变?

bxc 活跃值
6
2013-12-22 12:11
5327
X86汇编中.一般call某函数时,在函数返回时ebp的值不可改变.还有哪些寄存器的值不可改变呢?

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (7)
雪    币: 257
活跃值: (67)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
多数是ebp,ebx,esi,edi这4个寄存器
2013-12-22 13:54
0
雪    币: 7048
活跃值: (3527)
能力值: ( LV12,RANK:340 )
在线值:
发帖
回帖
粉丝
3
OD测试了一下,好像都是这4个,请问有什么原因吗?为何ebx、esi、edi一般不能随便改变?
2013-12-22 14:04
0
雪    币: 1392
活跃值: (5142)
能力值: ( LV13,RANK:240 )
在线值:
发帖
回帖
粉丝
4
寄存器一般都有自己特定的用途,
比如EBP 一般保存上一级的ESP。你修改EBP 回到上一个CALL中 MOV ESP,EBP会出错。

但是eax ecx一般用作累加累乘,所以这一类一般是改变数据,而不是程序流程。
2013-12-22 14:32
0
雪    币: 1489
活跃值: (1013)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
5
http://msdn.microsoft.com/zh-cn/library/9z1stfyw.aspx

答案在这里。
2013-12-22 19:49
0
雪    币: 952
活跃值: (1821)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
看调用约定
2013-12-22 20:05
0
雪    币: 7048
活跃值: (3527)
能力值: ( LV12,RANK:340 )
在线值:
发帖
回帖
粉丝
7
十分有用~
2013-12-22 22:05
0
雪    币: 101
活跃值: (43)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
8
百度搜  非易失性寄存器
2013-12-23 08:20
0
游客
登录 | 注册 方可回帖
返回
//