mov 和 lea 指令比较

mov -----把数据从一个位置移动到另一个位置  mov destination,source

由方括号括起来的操作数是对内存中数据的引用, [ebx] 指向的内存地址为ebx 处的数据

mov eax , ebx+8  ---这样的指令时非法的

这点类似 C 语言中的指针, int* b ; 定义的 b  为指针,容量为4个字节,用来表示某个地址,

a=*b ; 取变量b 的地址 传给a ,  等价  mov eax,[ebx] 

 

lea  ----- load effective address (加载有效地址) lea  destination , source

lea指令用来将一个内存地址赋给目的操作数,

lea eax,[ebx+8]---  将ebx+8 的值给eax.   等价于   mov  eax,ebx+8

mov eax,[ebx+8] --- 加载内存中地址为ebx+8 处的数据

 

lea eax,ebx+8 ------ 加载内存中地址为ebx+8 处的数据

 

 

可以看到lea  指令可以操作地址也可以操作数据,而且 lea 指令只有一个 周期,因此 lea  指令可以 被一些编译器做很多优化

lea ebx,[eax*5+5] 等价于  ebx=(eax+1)*5 

== 比下面的指令更快更短

inc eax;

mov cx ,5;

mul ecx;

mov ebx,eax

 

 

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值