这篇文章主要介绍了汇编语言lea指令使用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

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

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)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

linux汇编 lea,汇编语言lea指令使用方法解析相关推荐

  1. leaq c 汇编语言,汇编语言lea指令使用方法解析

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

  2. linux系统c 如何使用教程,基于Linux操作系统的C语言编译和调试方法解析

    摘 要:文章先介绍了GCC编译器相关内容,包括GCC编译程序和GCC编译选项,随后介绍了GDB调试程序相关内容,包括GDB具体操作和GDB基础命令,最后介绍了C语言编写中的注意事项,希望能给相关人士提 ...

  3. linux汇编指令输出到屏幕,Linux 汇编语言(GNU GAS汇编)开发指南

    三.Hello World! 真不知道打破这个传统会带来什么样的后果,但既然所有程序设计语言的第一个例子都是在屏幕上打印一个字符串 "Hello World!",那我们也以这种方式 ...

  4. linux汇编语言cmp,汇编语言中cmp指令用法笔记与总结

    这篇文章主要介绍了汇编语言中cmp指令用法,结合实例形式总结分析了汇编语言cmp指令基本功能.使用方法及操作注意事项,需要的朋友可以参考下 本文实例讲述了汇编语言中cmp指令用法.分享给大家供大家参考 ...

  5. 【Android 逆向】x86 汇编 ( call 子函数调用指令 | jmp 跳转指令 | lea 加载指令 | mov 数据传送指令 )

    文章目录 一.call 子函数调用指令 二.jmp 跳转指令 三.lea 加载指令 四.mov 数据传送指令 总结 一.call 子函数调用指令 call 指令是 子函数调用指令 , 调用的指令的下一 ...

  6. 汇编语言中xor指令_汇编语言XOR指令:对两个操作数进行逻辑(按位)异或操作(推荐)...

    汇编语言 汇编语言(assembly language)是一种用于电子计算机.微处理器.微控制器或其他可编程器件的低级语言,亦称为符号语言.在汇编语言中,用助记符代替机器指令的操作码,用地址符号或标号 ...

  7. Linux汇编代码中加打印,汇编语言中调用C函数打印“hello world”

    linux中的汇编语言开发一般采用的是AT&T语法,而一些老版本的as对于intel的语法支持还不是很好,保险起见还是用AT&T语法才是王道啊 呵呵 # filename:hello. ...

  8. 51单片机汇编指令记忆方法

    虽然现在51单片机一般是用的C语言编程,但是记得当时大学教材还是教的汇编. 本文总结下51单片机的汇编指令,权当是参考,感兴趣的可以了解一下. 学习单片机,除了搞清单片机内部功能.存储空间分配及I/O ...

  9. ATT格式汇编—— mov与lea的区别

    ATT格式汇编-- mov与lea的区别 1. mov 数据传送指令,目的操作数不能是立即数,数据不能从内存直接传送到内存(若需要,转化成2条指令,从内存取数据到寄存器,从寄存器到内存) 2. lea ...

最新文章

  1. AC日记——行程长度编码 openjudge 1.7 32
  2. 成功解决from scipy.misc import imread, imresize ImportError: cannot import name ‘imread‘
  3. poj 3728 Catch That Cow ([kuangbin带你飞]专题一 简单搜索)
  4. LeetCode MySQL 1083. 销售分析 II
  5. [Ajax] jQuery中的Ajax -- 02-jQuery中的三级联动
  6. Algs4-2.3.8Quick.sort()在处理N个全部重复的元素时比较次数
  7. Hibernate的Cascade——级联操作
  8. 无痕 PS、读得懂文字,OpenAI 的二代 DALL·E 惊艳亮相
  9. etl 不能转换成date_java怎么将date类型转换成datetime类型
  10. 进阶之路(基础篇) - 020 放弃Arduino IDE,拥抱Sublime Text 3
  11. python数字类型floatcomplexint_Python 四种数值类型(int,long,float,complex)区别及转换
  12. 机械工程人工智能_机械工程中的人工智能
  13. 最好听的男孩英文名字大全
  14. 工厂物资管理E-R图
  15. Android 解决GreenDao:Failed to notify project evaluation listener
  16. 【计算机网络】物理层 : 编码 ( 数字数据 编码 数字信号 | 非归零编码 | 归零编码 | 反向不归零编码 | 曼彻斯特编码 | 差分曼彻斯特编码 | 4B/5B 编码 )
  17. Java 压缩ZIP包后 压缩包内文件名乱码问题解决
  18. SAP-MM 采购组和采购组织的关系
  19. Linux查看系统基本信息
  20. 基于树莓派的超声波数据采集与存储(一)——树莓派配置

热门文章

  1. 2022 buaa CO P6(Verilog实现流水线CPU(plus))
  2. 微软.net精简框架最常见问题
  3. jetson nano opencv3.4.x安装
  4. GD32 SPI0 REMAP设置
  5. SQL研习录(26)——子查询
  6. 是否允许应用获取设备信息_iOS 14 隐私保护:管理和控制共享的位置信息
  7. echarts_series总结
  8. 【Visio】利用visio2010宏画中文流程图
  9. 异常:“严重: The web application [] appears to have started a thread named [Thread-”
  10. 小米扫地机器人 设置虚拟墙_米家扫地机器人可以设置虚拟墙吗