汇编指令lea 和 mov 区别
刚开始学汇编都会接触到指令lea 和mov,但是这两个指令用法看起来很像,会经常误以为两者其实没有很大区别,甚至会误认为两者就是相等的,笔者本人也是很迷,而且书上对lea的讲解又十分有限,但是通过不懈的知识搜素,终于搞明白了这其中的差别,两者还是又很大不同的,所以mark一下防止忘了。
让我们一起看看下面的例子:
大家可以看到,第三行和第四行,看到右边的注释大家是不是有点明白了呢,lea代表的就是加载有效地址(load effective address),而(%rsi , %rdi , 4)代表的是以数值 %rsi + %rdi * 4 为内存地址,在内存里找到相对应的值,然而leaq 是取地址,所以取出来的地址正好是%rsi + %rdi * 4
即X(A) + 4(n*i) ,然后把其送给%rax。
接下来进入第四条语句,movl (%rax , %rcx ,4) %eax,代表的只是把 数值 %rax +%rcx +4作为内存地址,将内存里面的值取出来,mov给寄存器 %eax,其中内存里的值与地址%rax +%rcx +4没有直接关系。
总结一下
1. lea:加载有效地址
一般都是从内存里面取出 地址 传 递给寄存器,相当于C语言里面的取地址符号&
2…mov:
mov就是将一个值(这个值可能在内存,也可能在寄存器里面)传递给另外一个容器( 可以是寄存器,可以是内存),当然传递还有许多限制,在这就不一一赘述。
最后祝大家学习快乐,学习过程都可以收获到知识,yeah
汇编指令lea 和 mov 区别相关推荐
- windows debug下验证汇编指令中的mov指令传送数据
一.知识储备 1.8086CPU是16位结构,有16根数据线,20根地址线.16根数据线可以一次性传送16位数据,也就是两个字节(也就是一个字)的数据. 什么是字? 在这个特定计算机中,字是其用来一次 ...
- 汇编指令学习(MOV,MOVSX,MOVZX,LEA,XCHG)
一.MOV指令 1.将十六进制0x1234数值,赋值给eax寄存器 mov eax,0x1234 2.将十六进制0x123数值,赋值给内存地址为ebx mov dword [ebx],0x123 3. ...
- linux汇编 lea,汇编指令LEA
LEA是微机8086/8088系列的一条指令,取自英语Load effect address--取有效地址,也就是取偏移地址.在微机8086/8088中有20位物理地址,由16位段基址向左偏移4位再与 ...
- S5PV210体系结构与接口02:ARM编程模型 汇编指令
目录 1. ARM的基本设定 1.1 ARM数据类型 1.1.1 基本数据类型 1.1.2 浮点数据类型 1.1.3 存储器大小端 1.2 支持的指令集 2. Cortex-A8编程模型 2.1 处理 ...
- 【Android 逆向】x86 汇编 ( call 子函数调用指令 | jmp 跳转指令 | lea 加载指令 | mov 数据传送指令 )
文章目录 一.call 子函数调用指令 二.jmp 跳转指令 三.lea 加载指令 四.mov 数据传送指令 总结 一.call 子函数调用指令 call 指令是 子函数调用指令 , 调用的指令的下一 ...
- 汇编指令push,mov,call,pop,leave,ret建立与释放栈的过程
栈内的数据 栈在汇编层面是辅助实现函数调用的,每个函数调用过程在栈中被抽象成一帧 ,在老式的32位CPU架构IA32中还有固定寄存器指向当前帧底部(下图中的0x100000f4,0x100000d8) ...
- linux命令mov,汇编指令_Y-linuz-linux-w_新浪博客
ARM处理器有37个寄存器,其中31个通用寄存器,6个程序状态寄存器. R0~R7为不分组的通用寄存器,R8~R14为分组寄存器---不同工作模式下寄存器不同 R13:指向堆栈栈顶指针SP R14:用 ...
- 32位汇编寄存器及汇编指令
32位CPU所含有的寄存器有: 4个数据寄存器(EAX.EBX.ECX和EDX) 2个变址和指针寄存器(ESI和EDI) 2个指针寄存器(ESP和EBP) 6个段寄存器(ES.CS.SS.DS.FS和 ...
- 寄存器和常用的汇编指令
为了学习需要,最近查看了一下汇编,因为是个初学者很多东东基本不动,所以记录一下基本指令和寄存器,那样就会对汇编慢慢的适应,看得懂那些华丽花哨的反汇编代码了.学习这个东东基本是为了破解和逆向工程使用,因 ...
最新文章
- 如何保证消息的顺序性
- 学习 PHP SOAP 扩展的一些笔记
- Check failed: status == CUDNN_STATUS_SUCCESS (4 vs. 0) CUDNN_STATUS_INTERNAL_ERROR
- 计算机二级vb知识点汇总,计算机二级vb基础知识考点整理(13页)-原创力文档...
- 叙述无保密机制的rsa签名过程_安全系列之——RSA的公钥私钥有多少人能分的清楚?RSA的签名验签与加密解密如何使用公私钥?...
- cookie,session的区别和联系(补充token)
- [python opencv 计算机视觉零基础到实战] 十一找到图片中指定内容
- JS动态添加、删除classl类
- 【计算机科学基础】数据运算
- python一个中文占几个字节_python中英文字母和中文汉字所占的字节
- 【18】Python半成品购物车
- Android--数据存储
- 为啥mysql的load这么快_【MySQL】浅谈MySQL的LOAD DATA
- LLVM PASS类pwn题入门
- VScode markdown自动生成目录
- pandas中的freq和inferred_freq等时间参数究竟有哪些
- 第一章:客户端网页编程简介
- 使用NAT打造FTP服务新法
- kali系统渗透window实现屏幕监控
- linux的几个发行网站
热门文章
- 7-5 查询自动售货机中商品的价格
- OpenCV环境配置:Ubuntu18.04编译OpenCV4.2.0和contrib模块记录
- RSD 教程 —— §4.2 保存框架
- Redhat8的yum仓库配置及DNF的解释
- r,w,a 与 r+, w+, a+的区别(转)
- echars 创建中国气泡地图和定位图表点
- CMD命令批量抽取指定文件夹下所有文件路径
- MOOC【实用Python程序设计】_026正常血压
- 和ASP.NET AJAX应用程序环游地球
- 第15周OJ实践12 字符串替换