汇编 lea指令有啥用

来源:百度知道 编辑:UC知道 时间:2024/05/25 10:05:59
80386处理器的lea指令是取指针的地址 如:
lea eax,[ebp-4]
该指令在运行时按照ebp的值实际计算出地址放到eax中
此指令用在存储局部变量

但我认为这个指令没啥用,
可以用mov 指令代替。
直接把ebp的值减4再放到eax中,
在任何时候都没问题。

不知道我推断是不是对的,请高手纠正。
干脆解释程序用个伪指令不更好,把cpu指令弄那么庞大干啥。

4楼假的吧 250倍! 那干脆全用lea算了

实际上,楼主是知道这两条指令的差别的,只是觉得用lea指令有些多此一举。事实不然。

当源操作数很简单的情况下,完全可以用mov指令代替lea指令,如lea esi,Buffer,完全可以用指令mov esi,offset Buffer代替;但当源操作数稍微复杂一点的话,单用mov指令就代替不了了,至少要用到算术运算指令。指令集中提供lea指令,就是为了减少这些计算上的麻烦。

制造出来的设备、工具是为了减轻人们的劳动强度和提高工作效率。犹如,用原始的铁锅、烧柴禾能够烧菜、做饭,用煤气灶、电饭锅也能烧菜、做饭,你愿意用哪个呢?

你这样推断是不正确的,lea eax,[ebp-4]和mov eax,[ebp-4]
这两条语句在功能上是一样的,但是mov指令在数据传送路径和类型上与 lea有很大的不同,比如在move 中字类型不能与双字类型传送,否则编译出错,但是lea可以字类型不能向双字类型传送,具体的不同其实很多教材上都有的,你自己下去仔细看看~

lea传送的地址
mov传送的是内容

lea比mov运算速度快上大约250倍

一般用于获取指针的地址,请参考汇编或C的编程实例。