ARM汇编中B跳转指令和LDR跳转的区别 [转] 

B跳转指令是代码位置无关的,经过汇编后会替换为当前PC值加(减)一个修正值,不管这条指令是在哪一个地址执行,都能跳转到指定的位置。

B只能在当前PC的32M范围内跳转,LDR只能在当前PC的4KB(0xfff范围)跳转。

LDRPC,=xxx指令将向PC直接装载一个标号xxx的值,但标号经过编译后将被替换为一个与RO相对应的值,这样无论指令在何处执行都能跳转到一个指定的位置。

以AT91SAM9260的启动代码片段为例,0x10000000为Flash基址,0x20000000为SDRAM基址:

EXPORT  __ENTRY

__ENTRY

ResetEntry

b   HandlerReset

。。

。。

。。

HandlerReset

其中ENTRY为起点,也就是说这条代码的偏移为0.设HandlerReset的偏移为offset。如果将这段程序按照RO=0x10000000编译则:

b HandlerReset ADD PC , PC,#offset

LDR PC,=HandlerReset MOV PC , #(RO+offset)

当系统复位时,b HandlerReset 将PC指向0地址处Flash镜像代码的位置;而LDRPC,=HandlerReset将PC指向Flash中的原始代码位置,所以两者都能正常执行。

但是,如果程序按照RO=0x20000000编译,编译后生成的代码还是得烧写到Flash中,即0x10000000地址,系统复位后从0地址执行,bHandlerReset仍执行Flash镜像代码,程序能正常执行,而LDRPC,=HandlerReset将使PC指向0x20000000+offset,此地址位于SDRAM中,而此时代码尚未复制,SDRAM中尚无代码,程序不能运行。

B跳转指令是代码位置无关的,经过汇编后会替换为当前PC值加(减)一个修正值,不管这条指令是在哪一个地址执行,都能跳转到指定的位置。

B只能在当前PC的32M范围内跳转,LDR只能在当前PC的4KB(0xfff范围)跳转。

LDRPC,=xxx指令将向PC直接装载一个标号xxx的值,但标号经过编译后将被替换为一个与RO相对应的值,这样无论指令在何处执行都能跳转到一个指定的位置。

以AT91SAM9260的启动代码片段为例,0x10000000为Flash基址,0x20000000为SDRAM基址:

EXPORT  __ENTRY

__ENTRY

ResetEntry

b   HandlerReset

。。

。。

。。

HandlerReset

其中ENTRY为起点,也就是说这条代码的偏移为0.设HandlerReset的偏移为offset。如果将这段程序按照RO=0x10000000编译则:

b HandlerReset ADD PC , PC,#offset

LDR PC,=HandlerReset MOV PC , #(RO+offset)

当系统复位时,b HandlerReset 将PC指向0地址处Flash镜像代码的位置;而LDRPC,=HandlerReset将PC指向Flash中的原始代码位置,所以两者都能正常执行。

但是,如果程序按照RO=0x20000000编译,编译后生成的代码还是得烧写到Flash中,即0x10000000地址,系统复位后从0地址执行,bHandlerReset仍执行Flash镜像代码,程序能正常执行,而LDRPC,=HandlerReset将使PC指向0x20000000+offset,此地址位于SDRAM中,而此时代码尚未复制,SDRAM中尚无代码,程序不能运行。


相关内容

  • 嵌入式系统2012作业
  • 嵌入式系统2011作业 第1章 嵌入式系统概述 1.什么是嵌入式系统? 答: 嵌入式系统指的是以应用为中心和以计算机技术为基础的,并且软硬件是可裁剪的,能满足应用系统对功能.可靠性.成本.体积.功耗等指标严格要求的专用计算机系统. 2.与通用计算机相比,嵌入式系统有哪些特点? 答: 1:嵌入式系统通 ...

  • ARM-考试总结
  • 一.单项选择 1. ARM920T处理器执行下面两条汇编指令后: MOV R1,#0x1000 LDR R0, [R1], #14 寄存器R1的值是( B ). A.0x1000 B. 0x100E C. 0x0FFC D. 0x4 2. ARM的汇编指令 LDR R1,[R0,#0x04] 中的寻 ...

  • 嵌入式复习知识点
  • 一.基本概念 1.嵌入式系统是以应用为中心.以计算机技术为基础.软件硬件可裁剪.适应应用系统对功能.可靠性.成本.体积.功耗严格要求的专用计算机系统. 2.嵌入式处理器可以分为以下几大类:嵌入式微处理器:嵌入式微控制器:嵌入式DSP 处理器:嵌入式片上系统(SOC ). 3.对基于芯片的开发来说,应 ...

  • 嵌入式-课后答案---11页版本
  • 第1章 概述 1.嵌入式系统的基本含义是什么?为什么说单片机是典型的嵌入式系统? 一种计算机硬件和软件的组合,也许还有机械装置,用于实现一个特定功能. 在某些特定情况下,嵌入式系统是一个大系统或产品的一部分. MCU 的含义是:在一块芯片上集成了中央处理单元(CPU ).存储器(RAM/ROM等). ...

  • 全国计算机等级考试三级嵌入式系统模拟题完整全套
  • 一.嵌入式系统开发的基础知识 (1)特点: 1.嵌入式系统的特点.分类.发展与应用,熟悉嵌入式系统的逻辑组成. 专用性 隐蔽性 (嵌入式系统是被包装在内部) 资源受限(要求小型化.轻型化.低功耗及低成本,因此软硬件资源受到限制) 高可靠性(任何误动作都可能会产生致命的后果) 软件固化(软件都固化在只 ...

  • 2015.3计算机三级嵌入式新题(8套版)
  • 全国计算机等级考试三嵌入式系统开发技术题库第7套 一.选择题 1.下列产品中不属于嵌入式系统的是: A .洗衣机 B .空调机 C .个人电脑 D .电子血压计 2.下面关于嵌入式系统的叙述中,错误的是 A) 嵌入式系统所涉及的应用领域非常广泛 B) 嵌入式系统在数量上远远超过了各种类型的通用计算机 ...

  • 嵌入式助理工程师硬件试题
  • 嵌入式硬件助理工程师认证考试试题题库 一. 选择题 1.以下说法不正确的是(B ). A.任务可以有类型说明 B.任务可以返回一个数值 C.任务可以有形参变量 D.任务是一个无限循环 2.用图形点阵的方式显示一个16*16点阵汉字需要(B )字节. A.8 B.32 C.16 D.64 3.下列描述 ...

  • 嵌入式课后练习题答案
  • 第1章 1. 什么是嵌入式系统?嵌入式系统的组成? 从技术的角度定义:以应用为中心.以计算机技术为基础.软件硬件可裁剪.适应应用系统对功能.可靠性.成本.体积.功耗严格要求的专用计算机系统. 从系统的角度定义:嵌入式系统是设计完成复杂功能的硬件和软件,并使其紧密耦合在一起的计算机系统.术语嵌入式反映 ...

  • 嵌入式试题及答案
  • <嵌入式开发>期中试卷 试卷适用范围:2011级计算机科学与技术(本)1.2班 一.填空题(每空1分,共46分) 习 题 1 1.填空题 (1)嵌入式系统是以应用为中心.以 计算机技术 为基础,软.硬件可裁剪,适应于应用系统对功能.可靠性.成本.体积.功耗等方面有特殊要求的专用计算机系统 ...