首页
社区
课程
招聘
[讨论][讨论]Switch非线性的汇编有点问题?
发表于: 2013-12-4 16:13 19452

[讨论][讨论]Switch非线性的汇编有点问题?

2013-12-4 16:13
19452
书中130页的代码?为什么ECX指向的索引表。这个很是不解,ECX不应该时输入的数据吗?而索引表不是应该还有一个查表得过程吗?

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 160
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
尽信书则不如无书,谁告诉你ecx一定是输入参数或者索引表?
除特定场合外,寄存器的使用是自由的。
2013-12-4 16:39
0
雪    币: 185
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
同楼上, 除一定的约定之外,寄存器基本上是自由的。而ecx用于输入这一条,只是一条经验值而已,在特意的情况下,就不是了。
2013-12-4 16:49
0
雪    币: 25
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
我只是看书上的汇编代码有一点的困惑
2013-12-4 16:52
0
雪    币: 25
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
所以,我才来问问是不是书写错了,还是我理解错了
2013-12-4 16:53
0
雪    币: 160
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
ecx是易失性寄存器,除thiscall和fastcall调用约定时当做第一个参数,还可以用作计数器,如loop指令
除这些情况外,ecx随意使用,如mov eax, [ecx + edx * 4]就是一种当做基址寄存器来使用,虽然约定来说基址寄存器是ebx,但具体怎么用没有硬性规定。
上述环境均为x86,x64下不完全成立。
2013-12-4 17:45
0
游客
登录 | 注册 方可回帖
返回
//