汇编的一个代码 lea ecx, dword ptr [ecx+ecx*4]中的[ecx+ecx*4]为什么不写成[ecx*5]????

leaecx,dwordptr[ecx+ecx*4]leaecx,dwordptr[eax+ecx*2]这是汇编的两行代码,整个代码就是将字符串“123456”转换成整数... lea ecx, dword ptr [ecx+ecx*4]
lea ecx, dword ptr [eax+ecx*2]
这是汇编的两行代码,整个代码就是将字符串“123456”转换成整数123456,我想为什么要写成ecx+ecx*4和eax+ecx*2,为什么写成这样的形式,可以直接写成eax+ecx*10???没有财富值了,不好意思啊,希望帮忙解答。。。
展开
 我来答
百度网友6dc5d8b
2013-06-21 · TA获得超过721个赞
知道小有建树答主
回答量:390
采纳率:100%
帮助的人:275万
展开全部
lea ecx, dword ptr [ecx+ecx*4]
写成
lea ecx, dword ptr [ecx*5] 的确没有任何差别(可能是为了便于理解才那样写的,比如数组寻址)

但是你说的把
lea ecx, dword ptr [ecx+ecx*4](这里没用mov指令是因为lea指令执行效率比mov高)
lea ecx, dword ptr [eax+ecx*2]
写成
lea ecx, dword ptr [eax+ecx*10] 也没问题啊
等价的
至于为什么要分两步写,很可能是为了便于理解吧,字符数组的寻址过程,一步步写出来而已
还有问题么?
lirenyu
2018-06-24
知道答主
回答量:19
采纳率:0%
帮助的人:1.9万
展开全部
ecx+ecx*4 计算应该是这样的ecx+ecx左移2 ,貌似cpu执行比ecx*5效率高吧。。个人见解。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
macfans1999
2018-02-19 · TA获得超过2926个赞
知道小有建树答主
回答量:2809
采纳率:57%
帮助的人:942万
引用huangliuyou的回答:
lea ecx, dword ptr [ecx+ecx*4]
写成
lea ecx, dword ptr [ecx*5] 的确没有任何差别(可能是为了便于理解才那样写的,比如数组寻址)

但是你说的把
lea ecx, dword ptr [ecx+ecx*4](这里没用mov指令是因为lea指令执行效率比mov高)
lea ecx, dword ptr [eax+ecx*2]
写成
lea ecx, dword ptr [eax+ecx*10] 也没问题啊
等价的
至于为什么要分两步写,很可能是为了便于理解吧,字符数组的寻址过程,一步步写出来而已
还有问题么?
展开全部
因为Intel规定乘数只能是1,2,4,8中的一个
至于*5,*10根本不存在的
也根本不是什么方便理解,就是因为根本没有,就这么简单。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式