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

1. mov

数据传送指令,目的操作数不能是立即数,数据不能从内存直接传送到内存(若需要,转化成2条指令,从内存取数据到寄存器,从寄存器到内存)

2. lea

lea(load effective address)其实是mov的变形,它的源操作数看上去是一个内存引用,但并非从指定位置读入数据,而是将有效地址写入到目的操作数,目的操作时只能为寄存器

--出自《深入理解计算机系统(第三版)》P129

理解二者的不同之前,我们要先明白以下几个操作数格式的含义:

寄存器名:实际上是访问寄存器内保存的数;
eg: %rdi,实际上就是访问%rdi寄存器内保存的值

(寄存器名):实际上是以寄存器内存的值作为内存地址,访问该内存位置上存储的值
eg: (%rdi),实际上就是访问以%rdi寄存器内的值作为内存地址的该位置存放的值

使用表格将二者指令进行对比:
首先说明:
x in %rdi
y in %rsi
%rax 存储的是返回值

mov指令 lea指令
mov %rsi,%rax lea %rsi,%rax
val = y;
将%rsi寄存器中保存的值y存放到寄存器%rax中
val = &y;
将%rsi寄存器的地址保存到寄存器%rax上,但是对于寄存器本身而言,不像内存地址表示是16进制一样,寄存器通常是使用名称代替,这里可以理解为y的值就是%rsi
mov 8(%rsi,%rdi,8),%rax lea 8(%rsi,%rdi,8),%rax
val =*(y+8x+8);
将内存地址y+8x+8内保存的值存放到寄存器%rax中
val = y+8x+8;
将内存地址y+8x+8保存到寄存器%rax上
mov %rsi,(%rax )
*val = y;
将%rsi寄存器中保存的值y存放到内存地址(%rax中存放的值就是内存中的地址)内
lea 不存在该格式,因为lea指令的目的操作数只能是寄存器

mov %rsp,%rax = lea (%rsp),%rax 将寄存器%rsp内存储的值赋值给%rax寄存器

以上拙见,若有错误,恳请指点

ATT格式汇编—— mov与lea的区别相关推荐

  1. mov 和 lea 的区别有哪些?

    From:https://www.zhihu.com/question/40720890?sort=created 汇编中 mov 和 lea 的区别是什么 ?:https://bbs.csdn.ne ...

  2. Intel格式和ATT格式汇编区别

    一.AT&T 格式Linux 汇编语法格式<?xml:namespace prefix = "o" /> 在 AT&T 汇编格式中,寄存器名要加上 '% ...

  3. att格式汇编指令_ATT 汇编语法

    在研华的pc104上使用看门狗要使用汇编.使用汇编来修改CMOS里面的参数.也就是内联汇编. linux下gcc只支持ATT汇编.所以这儿有必要将ATT语法学习学习.以后需要的时候翻出来温习温习. 1 ...

  4. att格式汇编指令_关于ATT汇编

    ATT 汇编大体格式是: 指令 源操作数 目的操作数 ,比如将 10 移动到 eax 寄存器的写法: movl $10, %eax . 1.ATT 汇编的源操作数和目的操作数和 Intel 正好相反, ...

  5. att格式汇编指令_ARM汇编伪指令介绍.

    符号定义( Symbol Definition )伪指令 符号定义伪指令用于定义 ARM 汇编程序中的变量.对变量赋值以及定义寄存器的别名等操作. 常见的符号定义伪指令有如下几种: - 用于定义全局变 ...

  6. att格式汇编指令_ATT汇编语法简介

    这里,我们介绍三种类型的ATT汇编指令操作数的表示方法,其中指令参考对应体系的指令集(ISA). 第一种类型是立即数(immediate),其书写方式是'$'后面跟一个用标准C表示法表示的整数,比如$ ...

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

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

  8. mov和lea指令的区别

    0x00 指令概念 lea 指令(Load Effective Address)只能用于 memory addressing calculations, 不能用于 address memory 的计算 ...

  9. ATT汇编——MOV指令

    AT&T汇编--MOV指令 MOV类指令 MOVZ类指令 MOVS类指令 MOV类指令 MOV类指令是最简单的数据传送指令,这类指令把数据从源位置复制到目的位置,不做任何变化. MOV类指令由 ...

最新文章

  1. 排序后顺序错乱java_排列顺序不对怎么调
  2. GUN Global + Vim及其插件 打造Android源码阅读器
  3. 【渝粤教育】广东开放大学 海外社交媒体营销 形成性考核 (45)
  4. FFmpeg的C++封装:FFmpegWrapper
  5. 机器学习用于金融市场预测难在哪?
  6. C++工作笔记-多继承下的一个大坑
  7. mysql 存储过程 排序_mysql存储过程排序
  8. HighCharts控制不显示“上下文菜单”
  9. BCS 2020举行补天白帽日峰会 多维度彰显白帽实力
  10. Dart教程(二):基本语法
  11. 在GitHub上学黑客 --- 黑客成长技术清单
  12. Flink电商实时数仓项目04-DWS层
  13. js初级动态随机抽人事件运用 计时器和超时期应用 解决用on事件onclick多次点击不能停止的问题
  14. 森林安全守护者来了!
  15. 汉光武帝刘秀--昆阳之战
  16. 终结符号和非终结符号
  17. 【CSS面试题】—CSS实现三角形
  18. 处理ftp登陆提示[右] 500 OOPS: cannot change directory:/home/jock11
  19. 判断输出,输入0,1,2,3,输出aaaa,bbbbb,cccc,dddd(c语言)
  20. Linux内核OOM机制的详细分析【转】

热门文章

  1. 解决appium-desktop 定位元素页提示:Could not obtain source: {cause:{sessionId:6367bdd3-0a2a-4ab0......的问题
  2. 分布式系统(数据复制与一致性)
  3. 苏宁首页案例-移动端
  4. 黑科技:WiFi霸屏神器,线下高效引流解决方案
  5. 安卓手机删除的照片怎么恢复
  6. 17.Python中的魔法函数
  7. html样式删除,jQuery怎么删除css样式?
  8. 【Github】Git安装教程(Windows) 以及连接Github
  9. BZOJ 3529: [Sdoi2014]数表 莫比乌斯
  10. DOS 实方式下直接访问4GB 内存