ea指令变种(按大小分类):

leaw #2个字节
leal #4个字节
leaq #8个字节

lea的用法:

leaq a(b, c, d), %rax

首先lea指令是mov指令的变种,据说,lea指令是x86体系结构中,是一条最古老但是从某个方面来讲又是最神奇的指令。

表面上看,它做的事情非常简单,根据括号里的源操作数来计算地址,然后把地址加载到目标寄存器中。

例如:leaq a(b, c, d), %rax 先计算地址a + b + c * d,然后把最终地址载到寄存器rax中。

最逗的是leaq不引用源操作数里的寄存器,只是单纯的计算。那这样的完全可以把它当作乘法指令使用。

例如:

rbx * 2

movq $8, %rbx
leaq (, %rbx, 2), %rax

rbx * 3

movq $8, %rbx
leaq (%rbx, %rbx, 2), %rax

rbx * 3 - 1

movq $8, %rbx
leaq -1(%rbx, %rbx, 2), %rax

什么时候用lea指令:

在打算用五六条指令来完成某个乘法运算之前,看看能否通过两三条lea指令来代替它。

注意事项:

d的取值范围是1,2,4,8(64位cpu)

汇编总结:lea指令相关推荐

  1. 汇编:lea指令学习

    加载有效地址(load effective address)指令就是lea,他的指令形式就是从内存读取数据到寄存器,但是实际上他没有引用内存,而是将有效地址写入到目的的操作数,就像是C语言地址操作符& ...

  2. 计算机汇编指令mov和mova,汇编语言中mov和lea指令的区别详解

    指令(instruction)是一种语句,它在程序汇编编译时变得可执行.汇编器将指令翻译为机器语言字节,并且在运行时由 CPU 加载和执行. 一条指令有四个组成部分: 标号(可选) 指令助记符(必需) ...

  3. 汇编中的lea指令的作用,简单清晰明了不废话!

    首先看一下intel开发手册上对lea的官方解释: lea,官方解释Load Effective Address,即装入有效地址的意思,它的操作数就是地址: 常见的几种用法: 1.lea eax,[a ...

  4. linux汇编 lea,汇编语言lea指令使用方法解析

    这篇文章主要介绍了汇编语言lea指令使用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 lea指令变种(按大小分类): leaw #2个字节 ...

  5. 汇编lea 指令的作用

    LEA指令的功能是将源操作数.即存储单元的有效地址(偏移地址)传送到目的操作数. 示例LEA BX,[BX+SI+0F54H]指令中,[BX+SI+0F54H]采用相对基址变址的寻址方式表达存储单元, ...

  6. 汇编 lea指令和mov指令

    lea指令 load effective address, 加载有效地址,可以将有效地址传送到指定的的寄存器.指令形式是从存储器读数据到寄存器, 效果是将存储器的有效地址写入到目的操作数, 简单说, ...

  7. 【debug】汇编跳转指令: JMP、JECXZ、JA、JB、JG、JL、JE、JZ、JS、JC、JO、JP 等

    汇编跳转指令: JMP.JECXZ.JA.JB.JG.JL.JE.JZ.JS.JC.JO.JP 等 2017年11月12日 15:01:09 zmmycsdn 阅读数 19334 转自:http:// ...

  8. STOS指令和LEA指令

    STOS指令和LEA指令 因为网上有些资料存在一些错误,所以写了这篇博客以供复习之用 STOS STOS指令有3种,分别对应的是3种数据形式DWORD,WORD,BYTE STOS DWORD PTR ...

  9. 汇编语言-中括号-mov指令-cmp指令-lea指令

    文章目录 1.汇编语言中"[]"的用法 2.mov指令中用到"[]" 3.cmp指令中用到"[]" 4.lea指令 5.test指令 其实& ...

最新文章

  1. 发改委:加速布局车联网与自动驾驶
  2. vbox 设置linux共享文件夹,Windows 7下设置VirtualBox中Linux共享文件夹
  3. python队列在进程传递_Python 进程队列
  4. 2020.5.27 线性规划测试(Lingo实现)
  5. 产品经理经验谈100篇(二)-数据分析应用,如何构建指标体系?
  6. CSS之Responsive设计和CSS3 Media Queries的结合
  7. PL/SQL配置文件解析
  8. liunx 中mysql 远程连不上_linux中MySQL本地可以连接,远程连接不上问题
  9. 正在使用的项目,项目名那里出现了红色感叹号?怎么去除?
  10. Java17,有史以来最快 JDK!
  11. Python输出异常信息(行号)
  12. 智慧旅游系统总体设计方案
  13. 《深入理解JVM虚拟机》读书笔记(一)
  14. J-Link驱动安装
  15. 实时IP语音通信流程简介
  16. Ti的C28x系列的DSP(28069)(28377D)使用经验,CMD文件
  17. 数学——Lipschitz连续
  18. Q1财报大超预期,“大象”百度成功“转身”?
  19. SCI、EI论文框架
  20. Elasticsearch Kibana Filebeat开启SSL通信

热门文章

  1. 实现的校验银行卡功能
  2. 芯片测试术语 ,片内测试(BIST),ATE测试
  3. 中国省份城市 数据表
  4. Cyanosis Observation Index (COI) 发绀观察指数 计算软件
  5. 2020 CCPC 秦皇岛 K. Kingdom‘s Power(树形DP)
  6. 运用正则爬取猫眼电影流程
  7. CAN总线-ACK应答机制分析
  8. 服务器主板芯片组有几种型号,装机搭配:锐龙所有型号及搭配的主板芯片组信息分享...
  9. 算法手撕代码1~10
  10. java中 ^ 是什么意思