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

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

bxc 活跃值
6
2013-12-22 12:11
5477
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
雪    币: 7077
活跃值: (3603)
能力值: ( LV12,RANK:340 )
在线值:
发帖
回帖
粉丝
3
OD测试了一下,好像都是这4个,请问有什么原因吗?为何ebx、esi、edi一般不能随便改变?
2013-12-22 14:04
0
雪    币: 1515
活跃值: (5972)
能力值: ( LV13,RANK:240 )
在线值:
发帖
回帖
粉丝
4
寄存器一般都有自己特定的用途,
比如EBP 一般保存上一级的ESP。你修改EBP 回到上一个CALL中 MOV ESP,EBP会出错。

但是eax ecx一般用作累加累乘,所以这一类一般是改变数据,而不是程序流程。
2013-12-22 14:32
0
雪    币: 3274
活跃值: (2333)
能力值: ( LV10,RANK:170 )
在线值:
发帖
回帖
粉丝
5
ebaK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8X3#2K6k6r3&6Q4x3X3g2E0K9h3y4J5L8%4y4G2k6Y4c8Q4x3X3g2U0L8$3#2Q4x3V1k6*7K9q4)9J5k6r3y4F1i4K6u0r3L8r3W2T1M7X3q4J5P5g2)9J5c8U0W2*7x3i4y4@1k6Y4W2%4i4K6u0W2j5i4y4H3P5l9`.`.

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