首页
论坛
课程
招聘
[讨论][讨论]Switch非线性的汇编有点问题?
2013-12-4 16:13 18301

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

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

[公告] 欢迎大家踊跃尝试高研班11月试题,挑战自己的极限!

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