lea in" lea eax,[eax * 4]"加载值?

时间:2018-06-13 11:34:59

标签: assembly

来自this answer

  

lea eax, [eax*4] == shl eax, 2 ; but without setting flags

因此,我认为lea在此处加载eax(不是地址),而lea执行以下操作:

  1. 访问eax
  2. 中存储的值
  3. <<2
  4. 将计算值加载到eax
  5. 但是this answer说:

      

    LEA加载指向您正在寻址

    的项目的指针

    两者是否冲突?如果lea只能Load Effective Address,它的价值如何shl?我在哪里理解错了?

1 个答案:

答案 0 :(得分:0)

  

“lea eax,[eax * 4]”中的lea是否加载了值?

不,不是:

我认为让你感到困惑的是括号'[]'

[1234]是“地址1234处的值”,其“有效地址”为1234(括号已删除)

所以LEA EAX, [4*EAX]加载[4*EAX]的有效地址4*EAX

EAX的内容(当然是读取),[4xEAX]内存中的值不是

实际上LEA <reg>, [something]MOV <reg>, something非常相似,而LEA可以做一些基本的算术(x2,x4,x8,添加偏移量)和MOV不能