mov和ldr/str的区别
来源:互联网 发布:windows文件系统结构 编辑:程序博客网 时间:2024/05/22 18:22
ARM是RISC结构,数据从内存到CPU之间的移动只能通过L/S指令来完成,也就是ldr/str指令。
比如想把数据从内存中某处读取到寄存器中,只能使用ldr
就是把0x12345678这个地址中的值存放到r0中。
而mov不能干这个活,mov只能在寄存器之间移动数据,或者把立即数移动到寄存器中,这个和x86这种CISC架构 的芯片区别最大的地方。
x86中没有ldr这种指令,因为x86的mov指令可以将数据从内存中移动到寄存器中。
另外还有一个就是ldr伪指令,虽然ldr伪指令和ARM的ldr指令很像,但是作用不太一样。
ldr伪指令可以在立即数(这里个人觉得常数更适合)前加上=,以表示把一个地址写到某寄存器中,比如:
ldr r0, =0x12345678
这样,就把0x12345678这个地址写到r0中了。所以,ldr伪指令和mov是比较相似的。只不过mov指令限制了立即数的长度为8位,也就是不能超过512。
而ldr伪指令没有这个限制。如果使用ldr伪指令时,后面跟的立即数没有超过8位,那么在实际汇编的时候该ldr伪指令是被转换为mov指令的。
ldr伪指令和ldr指令不是一个同东西。
比如想把数据从内存中某处读取到寄存器中,只能使用ldr
比如:
ldr r0, 0x12345678就是把0x12345678这个地址中的值存放到r0中。
而mov不能干这个活,mov只能在寄存器之间移动数据,或者把立即数移动到寄存器中,这个和x86这种CISC架构 的芯片区别最大的地方。
x86中没有ldr这种指令,因为x86的mov指令可以将数据从内存中移动到寄存器中。
另外还有一个就是ldr伪指令,虽然ldr伪指令和ARM的ldr指令很像,但是作用不太一样。
ldr伪指令可以在立即数(这里个人觉得常数更适合)前加上=,以表示把一个地址写到某寄存器中,比如:
ldr r0, =0x12345678
这样,就把0x12345678这个地址写到r0中了。所以,ldr伪指令和mov是比较相似的。只不过mov指令限制了立即数的长度为8位,也就是不能超过512。
而ldr伪指令没有这个限制。如果使用ldr伪指令时,后面跟的立即数没有超过8位,那么在实际汇编的时候该ldr伪指令是被转换为mov指令的。
ldr伪指令和ldr指令不是一个同东西。
0 0
- mov和ldr/str的区别
- mov和ldr/str的区别
- mov和ldr/str的区别
- arm指令MOV和ldr的区别
- 【记录】LDR和MOV指令的区别
- MOV、LDR加载指令和LDR伪指令的区别
- LDR,STR,MOV
- LDR 和MOV 指令区别
- ARM指令集--ldr、mov与str的用法与区别
- ARM指令集–ldr、mov与str的用法与区别
- ARM立即数,LDR和MOV的区别
- MOV指令和LDR伪指令的区别
- ARM立即数,LDR和MOV的区别 (转)
- ARM立即数,LDR和MOV的区别
- 转ldr和mov指令的区别(转)
- ARM立即数,LDR和MOV的区别
- ARM立即数讲解--LDR和MOV的区别
- ARM立即数讲解--LDR和MOV的区别
- OJ:约数个数
- Asp.Net
- 字串 codepage 轉碼處理
- 数据库的 一对多、多对一、一对一、多对多 关系
- windows07, 64BIT如何配置PHP
- mov和ldr/str的区别
- 关于组播
- Cocos2d-x 3.0 新特性体验(3)触摸事件处理机制
- /*+ driving_site(table) */优化
- ASP.NET 配置系统提供以下好处
- 关于系统移植工具
- Java自引用以及陷阱
- C语言字符串操作总结大全(超详细)
- [LeetCode]Roman to Integer