永发信息网

关于汇编LEA指令的问题

答案:4  悬赏:0  手机版
解决时间 2021-04-04 13:45
  • 提问者网友:贪了杯
  • 2021-04-04 03:52
关于汇编LEA指令的问题
最佳答案
  • 五星知识达人网友:鱼芗
  • 2021-04-04 05:04
mov ecx,[eax+0x30]表示先运算eax+0x30得到一个结果,以这个结果为地址找一个ecx长度的内存数赋给ecx
lea ecx,[eax+0x30]表示先运算eax+0x30得到一个结果,把这个结果(mov时地址)赋给ecx
效果为ecx=eax+0x30 (这里eax参与了运算却没有改变值)
如果不用这个那要用
mov ecx,0x30
add ecx,eax
从指令长度和执行速度来看.lea ecx,[eax+0x30]要好.
全部回答
  • 1楼网友:人间朝暮
  • 2021-04-04 08:43
楼主你好。你说的其中eax为0,只是本题的特例,很有可能eax不等于0。这条指令是有通用性的,非一般初学者能够写得出来的。
补充回答:通用性就在于eax的变数。若WSAStartup函数返回的值不是0呢?
  • 2楼网友:笑迎怀羞
  • 2021-04-04 07:11
这个LEA在C++中经常当作优化指令的
举个例子吧
一下句子只要一个始终
lea eax ,[eax+ecx*4+ebx]
  • 3楼网友:你哪知我潦倒为你
  • 2021-04-04 05:49
成功则返回0,错误那么就返回错误信息。这要看后面的指令是什么。我估计eax返回的值可能作为一种选择,不同的eax值打印出不同的错误信息。如果对这个问题敢兴趣,不如在动态跟踪的情况下,测试一下各种值的效果。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯