ARM微处理器的指令集概述(四)——MOV和LDR的区别

发布者:世界因你而精彩最新更新时间:2022-04-23 来源: eefocus关键字:ARM  微处理器  指令集  MOV  LDR 手机看文章 扫描二维码
随时随地手机看文章

一   先让我们看一段汇编代码

LDR R0,=0x56000010 #R0 is set to be register GPBCON and is used to select pin function for Port B 

#in,out special function and others 

MOV R1,#0x00004000 

STR R1,[R0] #pin GPB7 is set to be output port

以上三条汇编语句的功能是将数值0x00004000存储到以0x56000010为地址的存储单元中。


其反汇编代码如下


   0:   e59f0044        ldr     r0, [pc, #68]   ; 0x4c

   4:   e3a01901        mov     r1, #16384      ; 0x4000

   8:   e5801000        str     r1, [r0]

 

   ......

 

   4c:   56000010        undefined

可见LDR R0,=0x56000010        被转换成ldr指令来执行


二  再看

LDR R0,=0x56000000  

MOV R1,#0x00004000

STR R1,[R0]  

其反汇编代码如下

   0:   e3a00456        mov     r0, #1442840576 ; 0x56000000

   4:   e3a01901        mov     r1, #16384      ; 0x4000

   8:   e5801000        str     r1, [r0]


这里LDR R0,=0x56000000   被转换成mov     r0, #1442840576

也就是说LDR伪指令是根据后面的数据值来决定转换为ldr指令或MOV指令执行。


那么同样是给R0赋值,LDR R0,=0x56000010 能否用mov     r0, #0x56000010来代替呢,


三  由此可见MOV和LDR的区别

mov指令后面的立即数是有限制的,这个立即数必须由一个8位的二进制数经过偶数次右移后得到才合法数据


LDR R0,=0x56000000   被转换成mov     r0, #0x56000000,其中立即数0x56000000是可以由0x56经过循环右移得到的,而0x56000010无法通过一个8位的二进制数经过偶数次右移后得到,所以无法转换成mov指令来实现。


四  再举例如下:

mov R0,#0x101

mov R0,#0xFF1

以上两条指令都不正确,因为立即数不合法。

这样的话用MOV指令是比较麻烦的,因为有些简单的数据比较容易看出来,有些数据即不容易看出来是否是合法数据。


五  使用ldr伪指令解决这个问题

为了解决这个问题,我们可以用LDR伪指令来实现,根据后面的立即数来决定转换为ldr指令或MOV指令执行,符合MOV指令的立即数合法性要求就转换为MOV指令,不符合的话就转换为LDR加载指令来实现。


在Uboot源码中看到这样一条指令 MOV r1,#0xFFFFFFFF


有点费解,查看反汇编代码如下


mvn r1,#0


原来如此。


关键字:ARM  微处理器  指令集  MOV  LDR 引用地址:ARM微处理器的指令集概述(四)——MOV和LDR的区别

上一篇:uboot-2011.12移植到S3C2440(序三)—— Makefile之参考文献
下一篇:《2440裸机》时钟体系

推荐阅读最新更新时间:2024-11-25 11:19

嵌入式调试ARM程序跑飞现象的跟踪
最近在调试2410的过程中,经常出现程序跑飞的现象,跟踪进行后发现。。。所以决定把它记录下来。 现象: 调试用的是技创ARM仿真器(兼容multi-ICE)和ADS1.2,板子外扩NandFLASH(装有Bootload)和SDRAM。当将程序烧到FLASH运行时会出现无规律的死机。用仿真器仿真时情况是这样:当CPU复位后,第一次装载程序执行时,情况与烧到FLASH运行时一样。但如果将运行的程序停下来(无论有无跑飞情况下),再重新装载(CPU复位后第二次及以后装载)时,运行到下述程序中的“msr cpsr_cxsf,r1”就跑飞。 bic r0,r0,#MODEMASK | NOINT ;IRQ、FIQ位清0
[单片机]
Arm Development Studio 最新版本2020.0 发布!
Arm Development Studio支持从架构探索到实时应用程序开发以及边缘设备编码的所有类型的软件开发项目。 它加快了系统设计和软件开发的速度,使合作伙伴和客户能够更快,更经济地将更高质量的产品推向市场。 近日,Arm发布了Arm Development Studio最新版本2020.0,新增了最新的处理器的支持,增加支持STLINK和FDTI调试探测器等,产品具体的更新信息如下: 不同版本都加了对更高级芯片的支持: Bronze版本添加了Cortex-M55和star 处理器的支持。 Gold版本的编译器支持Cortex-A34,Cortex-A77和N
[嵌入式]
<font color='red'>Arm</font> Development Studio 最新版本2020.0 发布!
ARM Linux根文件系统(Root Filesystem)的制作
简介:介绍根文件系统的组成:目录、Shell、库、脚本。 目录 根文件系统要包含这些必须有的目录:/dev、/bin、/usr、/sbin、/lib、/etc、/proc、/sys /dev是devfs(设备文件系统)或者udev的挂在点所在。在使用devfs的内核里如果没有/dev,根本见不到Shell启动的信息,因为内核找不到/dev/console;在使用udev的系统里,也事先需要在/dev下建立console和null这两个节点。关于devfs和udev的区别,网上很多文章说。当然如果你的内核已经不支持devfs了(2.6.12以后),可以使用纯纯的静态节点。也就是用mknod人工生成。 /bin、/usr/
[单片机]
基于ARM9嵌入式系统的智能灭火机器人怎样设计
0 引 言 控制器是智能机器人处理和控制信息的主体,它直接决定了机器人的行为和性能。近几年来随着高性能微控制器和嵌入式系统技术的不断进步,为各类实时控制应用提供了解决方案。 嵌入式系统(ES)是技术、通信技术、半导体技术、微电子技术、语音图像数据传输技术,甚至等先进技术和具体应用对象相结合后的系统,其是硬件和紧密捆绑在一起的系统。将嵌入式系统应用于灭火机器人的设计中,对机器人的性能智能化、网络化、小型化都有了明显提高。 比赛用灭火机器人需要机器人有智能较高的自动控制性能与可靠的机械控制性能的同时保证,才能在短时间内准确寻找到火源并灭火回家。在此以9处理器为核心,对基于嵌入式系统的智能灭火机器人进行了设计。本文将从硬件
[机器人]
20nm新工艺Cortex-A9处理器成功流片
    GlobalFoundries、ARM今天联合宣布了双方在Cortex-A系列处理器架构SoC方案上的最新进展,包括全球第一颗频率超过2.5GHz的28nm Cortex-A9双核心处理器,以及20nm新工艺Cortex-A9处理器的第一次成功流片。   2.5GHz高频率的双核心Cortex-A9处理器是在德国德累斯顿Fab 1晶圆厂中完成的,所用制造工艺是高性能版本的28nmHP。   GlobalFoundries表示,如果再使用更高性能的28nmHPP,主频还可以提得更高。28nmHPP工艺主要面向有线网络应用方案,运行电压可以只有区区0.85V,功耗也会非常非常低。   20nm Cortex-A9的
[嵌入式]
基于FPGA+DSP+ARM的数据传送总线变换器
  在飞控组件测试时,由于被测系统与上位机有一定距离,如果直接把遥测并行数据传送到上位机,将会出现数据信号的衰减和信号延时问题,有可能使信号时序错位,从而达不到系统测试的要求。为此,需要研制一种数据传送总线变换器,用来完成被测数据无失真的、实时的、远距离与上位机的通信,并能接收上位机的控制指令,实现工作状态的远程交互。   1 数据传送总线变换器的整体设计   综合考虑到测试系统实时性和可靠性的要求,选择以太网口作为数据传送总线变换器与上位机的数据转发接口,以高速串口作为控制口,采用FPGA+DSP+ARM的架构作为实时信息处理平台。   数据传送总线变换器的系统框图如图1所示。其中,FPGA作为数据预处理器,完成并行数据到
[单片机]
基于FPGA+DSP+<font color='red'>ARM</font>的数据传送总线变换器
[初级教程]arm-linux裸机开发之-bootstrap.bin的实现
1.前言 我们知道,在Linux平台下编写的程序要想在arm平台上运行,我们就得使用交叉的编译器,我们用arm-linux-none-gnueabi-gcc 或者arm-linux-gcc也罢,这些编译器编译产生的程序能够直接运行在arm的平台上,那我们的bootstrap.bin自己来实现,都需要具备哪些文件呢?众所周知,在引导程序中当今做大的最大的莫过于U-Boot这个组织,今天,我们就模仿U-Boot来实现一个简易的引导程序,我们称之为Bootstrap.bin。实现该bin文件我们模仿U-Boot的工程模版,写出几个实现文件: start.S 我们知道汇编指令的代码在机器上执行的速度比较快,那些短小精悍的程序往往运行在
[单片机]
[初级教程]<font color='red'>arm</font>-linux裸机开发之-bootstrap.bin的实现
ARM】2440裸机系列-gpio按键控制
功能 通过GPIO,实现按键1点亮LED1,按键2点亮LED2…… 说明 1)因为2440的按键只涉及行,所以在扫描按键时比2410简单了很多 2)在进行移位操作之前,必须进行数据寄存器的初始化,否则会出错(硬件特性) 源码 /***************************************************************************** *****函数名:main() *****功 能:通过GPIO,实现按键1点亮LED1,按键2点亮LED2 *****说 明: ***************************************************
[单片机]

推荐帖子

电源技术
电源作为所有用电设备及电气控制器的能量提供单元,它的种类和规格较多,不同的用电设备及电气控制器所使用的电源种类和规格一般不同……电源技术下了看看,谢谢分享哦回复楼主lk972105的帖子谢谢分享哦回复楼主lk972105的帖子不客气,好好研究研究啊。回复板凳meng7722154的帖子补充电源设计资料,希望大家支持!下不了啊,谁能给我几个芯币啊costmemuch:L你得好好“挣钱”!回复7楼jianglgang的帖子原帖由meng772
lk972105 电源技术
请问msp432launchpad活动的e金币发放了吗
请问msp432launchpad活动的e金币发放了吗,好像并没有收到请问msp432launchpad活动的e金币发放了吗反正手环收到了~!这个在等等吧,我的手环昨天也到了,这个不需要担心,你和管理员核实下应该就行看到大家已经在秀手环了就问一下,毕竟第一次有e金币flashtt发表于2015-6-2718:48看到大家已经在秀手环了就问一下,毕竟第一次有e金币 别急因为是一个管理员在负责这个事情,而且一般要凑够一定人数统一发放,发放时会有站内短信通知。
flashtt 微控制器 MCU
把kernel从vivi向u-boot移植的时候遇到问题了!
三星提供的kernel是forvivi的,但俺想用u-boot来引导,结果移植上去之后,u-boot是跑起来了,但是引导kernel却出问题了看了kernel的头部的二进制数据,发现kernel的格式竟然还和bootloader的类型有关,forvivi的kernel的头就是适合vivi,不适合u-boot的,这下郁闷了,不知道我发现的对不对,也不知道怎么改,各位同学有感兴趣的么?或者有经验的,指导一下地说~~把kernel从vivi向u-boot移植的时候遇到问题了!
zqf5 嵌入式系统
求解:双向可控硅触发方式有几种?
那位大师能给解释一下双向可控硅触发方式有几种?及每种方式的优缺点?求解:双向可控硅触发方式有几种?双向可控硅是相当于两个单向可控硅反并在一起,然后把G(控制极)接在一起.用的不多,具体它有几种方式我不是很清楚,但它的触发信号也是交流的~~~~回复:求解:双向可控硅触发方式有几种?双向可控硅有四种触发方式。哪种好,要看你是用来控制什么?对感性负载选择过零触发较好。回复:求解:双向可控硅触发方式有几种?主要的还是通过门级来控制用的多,可靠!!!楼主提出的问题,下面的资料可供参考
到处看看 模拟电子
求ZJY-LBS147TC-IG01 RGB屏资料
求I2C接口ZJY-LBS147TC-IG01RGB屏资料,网上找了下没找到。部分原理图如下:用在复旦微FM33FT0xxA开发板上,贴片图如下​​​​​​​有这ZJY-LBS147TC-IG01模块驱动(芯片)的资料/驱动demo代码的可在此贴下分享,急求,TKS求ZJY-LBS147TC-IG01RGB屏资料看看这个资
dirty 汽车电子
小米的四电机系统的圆规掉头、原地掉头,算法实现上难吗?
四电机的圆规掉头、原地掉头,只是成本上的提升了,还是有算法上的突破?难点是在控制电机上,还在机械结构方面?现在小米智能底盘预研车展现的这些特色,很多人在哇塞,不太懂这些,蹲坛友解惑~小米的四电机系统的圆规掉头、原地掉头,算法实现上难吗?我感觉只是成本上的提升了,玩过diy小车的应该都会控制电机转向吧~分享一个网友的看法:四差速太基本的东西了运动模型,正逆运动学,现成的算法了,电机只要四轮独立可以控制原地调头的车小米不是第一辆吧,之前就有了有现成的运动模
蓝猫淘气 汽车电子
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved