现在的位置: 首页 > 综合 > 正文

解答 LEA指令的疑惑

2013年02月04日 ⁄ 综合 ⁄ 共 302字 ⁄ 字号 评论关闭
问题:
LEA指令不是取地址的吗?为什么最后ECX=0x30,可以用来存储立即数?
那这样为什么不直接用mov ecx,0x30呢?
这样用LEA指令有什么含义?


答案:
1. mov ecx,[eax+0x30]表示先运算eax+0x30得到一个结果,以这个结果为地址找一个ecx长度的内存数赋给ecx
2. lea ecx,[eax+0x30]表示先运算eax+0x30得到一个结果,把这个结果(mov时地址)赋给ecx ,效果为ecx=eax+0x30  (这里eax参与了运算却没有改变值)
如果没有LEA指令,那么:
mov ecx,0x30
add ecx,eax
从指令长度和执行速度来看.lea ecx,[eax+0x30]要好.
【上篇】
【下篇】

抱歉!评论已关闭.