ARM处理器CPSR标志位和条件符之间的关系

发布者:HeavenlyClouds最新更新时间:2012-12-08 来源: 21ic 关键字:ARM处理器  CPSR标志位  条件符 手机看文章 扫描二维码
随时随地手机看文章

  本文目的是要理清ARM处理器的CPSR状态标志和ARM指令的条件符之间的关系。

  一、CPSR寄存器

  ARM V4的CPSR寄存器(和保存它的SPSR寄存器)中的位分配如下图1所示。

图1 程序状态寄存器格式

  状态标志位含义:(其它位的含义和本文主题无关,此处不多介绍)

  N

  N=1 表示运算的结果为负数;N=0 表示运算的结果为正数或零;

  Z

  Z=1 表示运算的结果为零;Z=0表示运算的结果为非零;

  C

  可以有4种方法设置C的值:

  ─ 加法运算(包括比较指令CMN):当运算结果产生了进位时(无符号数溢出),C=1,否则C=0。

  ─ 减法运算(包括比较指令CMP):当运算时产生了借位,C=0,否则C=1。

  ─ 对于包含移位操作的非加/减运算指令,C为移出值的最后一位。

  ─ 对于其他的非加/减运算指令,C的值通常不改变。

  V

  可以有2种方法设置V的值:

  ─ 对于加/减法运算指令,当操作数和运算结果为二进制的补码表示的带符号数时,V=1表示符号位溢出。

  ─ 对于其他的非加/减运算指令,V的值通常不改变

  二、条件符及对应的标志位

  表1 条件符描述表

  三、关于C、V值更多的解释

  处理器内部以补码表示有符号数,8个二制位能够表达的整数范围是:+127 ~ -128,16位表达的范围是:+32767 ~ -32768。如果运算结果超出了这个范围,就是产生了溢出,有溢出,说明有符号数的运算结果需要考虑溢出情况。

  溢出标志V和进位标志C是两个意义不同的标志。进位标志表示无符号数运算结果是否超出范围;溢出标志表示有符号数运算结果是否超出范围。

  处理器对两个操作数进行运算时,按照无符号数求得结果,并相应设置进位标志C;同时,根据是否超出有符号数的范围设置溢出标志V。[page]

  应该利用哪个标志,则由程序员来决定。也就是说,如果将参加运算的操作数认为是无符号数,就应该关心进位;认为是有符号数,则要注意是否溢出。

  判断运算结果是否溢出有一个简单的规则:只有当两个相同符号数相加,而运算结果的符号与原数据符号相反时,产生溢出;其他情况下,则不会产生溢出。

  代码举例1:

  LDR     r0, =0x7fffffff

  LDR     r1, =0x70000000;

  ADDS    r0, r0, r1; //结果=0xefffffff

  对于无符号数运算来说,没有进位。

  对于有符号数运算来说,溢出。

  此时C=0 V=1;

  代码举例2:

  LDR     r0, =0xffffffff

  LDR     r1, =0x70000000;

  ADDS    r0, r0, r1; //结果=0x6fffffff

  对于无符号数运算来说,有进位。

  对于有符号数运算来说,无溢出。

  此时C=1 V=0;

  代码举例3:

  LDR     r0, =0x8fffffff

  LDR     r1, =0xf0000000 ;

  ADDS    r0, r0, r1; //结果=0x7fffffff

  此时C=? V=?;(思考一下,然后在ARM模拟器中验证下)

  代码举例4://思考减法时,C值的影响

  LDR     r0, =0x3

  LDR     r1, =0x2

  SUBS    r0, r0, r1

  对比:

  LDR     r0, =0x3

  LDR     r1, =-2;(-2的补码0xfffffffe会送到r1)

  ADDS    r0, r0, r1

  四、CPSR状态标志和ARM指令的条件符之间的关系

  有了上面的背景知识以后,接下来思考表1中CPSR状态标志和ARM指令的条件符之间的关系,下面选取其中的一项来分析。

  如:GE:(有符号数大于等于)

  N=0 V=0:结果是大于等于0的数,且无符合溢出,所以大于等于关系成立

  N=1 V=1:结果小于0,但有符号溢出

  考虑以下情况:c=a-b

  1.a<0, b<0

  减法操作时不可能符号溢出

  2.a>0, b<0

  可能出现N=V=1?? 如(8位数):100-(-100)=200

  显然a>b

  3.a<0, b>0

  参照上面提到过的判断溢出标志的简单规则,可以得出:在此情况下,

  减法操作时如果结果小于0 (N=1),则不会出现符号溢出

  所以(在N=1 V=1前提下a<0,b>0)这种情况不可能出现

  4.a>0, b>0

  减法操作不可能出现符号溢出。

  其它项的分析过程类似。

  五、总结

  尽管以上分析看起来有点复杂,但使用时在大多数情况下用一个简单的条件测试指令即可,不需要程序员计算出条件码的精确值即可得到需要的结果。

关键字:ARM处理器  CPSR标志位  条件符 引用地址:ARM处理器CPSR标志位和条件符之间的关系

上一篇:便携式数据采集系统的设计
下一篇:嵌入式GPS语音导航系统中MP3的解码与播放

推荐阅读最新更新时间:2024-03-16 13:14

基于ARM处理器的HDLC通信的DMA实现
目前在嵌入式产品开发设计中,通常是在OS(Operating System)厂商提供的BSP基础上进行开发工作;对于底层硬件的操作,程序设计人员很少关注或只是少量的修改。实际上很多产品,我们完全可以抛开操作系统的模式,避免不必要的系统开销,而对底层的硬件直接进行处理。这样,可以节省资源提高利用率。当然,这样也会人为地增加系统开发设计的难度。但是从长远的角度看,进行这样的设计思考还是非常必要的。现在一些产品的设计开发中,所缺少的实际上就是深入了解底层操作,这样往往使我们丢失了创新的机会。 本文主要分析如何在硬件基础上直接进行程序设计,介绍如何在底层进行HDLC通信控制操作,以及如何处理数据结构等方面的问题。对于进行驱动程序
[单片机]
基于<font color='red'>ARM处理器</font>的HDLC通信的DMA实现
ARM处理器架构奠定中国数字家庭娱乐主流领导地位
  ARM公司近日宣布,在过去一年多时间内,海思(Hisilicon)、晶晨半导体(Amlogic)、中天联科(Availink)、海尔(Haier)等多家中国知名芯片公司获得 ARM处理器 授权,用于其为 机顶盒 (STB)和 数字电视 (DTV)等 数字家庭娱乐 应用而设计的下一代片上系统(SoC)芯片。在这些公司中,有多家选择了ARM Cortex-A9处理器和Mali图形处理器。这一系列的授权协议标志着ARM处理器架构奠定了其在中国数字家庭娱乐领域的处理器架构主流领导地位。   于2010年1月举行的国务院常务会议作出了加快推进中国 三网融合 的决定,提出了在2015年之前全面实现三网融合发展的目标。
[家用电子]
ARM处理器与嵌入式系统
  引言   由于各种新型微处理器的出现和应用的不断深化,嵌入式系统在后PC时代得到了空前的发展。随着时间的推移和技术的进步,在工业控制和新兴的手持式应用等领域,用户体验成为产品成功的关键因素之一,越来越多的产品需要良好的用户界面、互联功能以及较强的数据处理能力,这对嵌入式处理器硬件、软件、教学等提出了新的要求。   1 嵌入式处理器与硬件   在处理器方面,目前大量的中、低端嵌入式应用,主要使用8/16位单片机。在国内,由于历史的原因,主要是以MCS51核为主的许多不同型号单片机,主要厂商有Atmel、Philips、Winbond、宏晶等。还有一些近几年发展较快的新型单片机,如PIC、AVR、MSP430系列等。这些单片
[单片机]
基于Proteus的Arm处理器的SPI接口实现
  引言   现在,人们生活中的每个角落都有嵌入式设备的存在,比如DVD、移动电话、MP3及掌上电脑等等。这些嵌入式设备多采用32位RISC嵌入式处理器作为核心部件。其中基于Arm核的嵌入式处理器独占鳌头,在32位RISC处理器中占据超过75%的市场份额。因而越来越多的电子爱好者都加入了学习ARM的队伍中。通过和一般单片机系统开发过程的比较不难发现,嵌入式系统的设计包括硬件设计和软件设计两个方面,其调试过程包括软件调试、硬件测试、系统调试3个过程。软件调试一般比较容易进行,但是硬件测试和系统调试则比较麻烦,因为要进行这两个过程必须在 PCB制作、元器件焊接完毕之后才能进行;而PCB的制作、元器件的焊接是非常费时费力的,如果能采用
[单片机]
全胜科技选择ARM处理器 用于高清网络视频应用
    专注于数模混合SoC技术研发和VLSI设计的珠海全胜科技有限公司(简称全胜科技)和ARM 公司共同宣布:全胜科技通过授权获得ARM926EJ-S处理器,用于其针对超低功耗高清网络视频应用的IC设计。这些应用包括:通过互联网、有线电视网和无线网进行视频流传输的家庭互联网高清视频播放器和其他网络视频设备。     全胜科技首席执行官张建辉表示:“除了人尽皆知的高性能和低功耗特性,ARM处理器的另一个重要特征就是通用性,它能带来更好的可扩展性,降低开发难度和工作量,并缩短产品上市时间。这些特性对于帮助我们设计针对快速变化的互联网视频应用的IC产品是非常重要的。ARM始终不遗余力地通过其强大的产品规划推动着创新,这为我们在未来
[家用电子]
ARM处理器系统初始化过程
每次系统上电/复位启动时,处理器都处于一种最低性能即只有最基本功能的状态,此时它只能从复位向量地址处去读取指令,其他功能模块都处于禁止或者不可预知状态,而一旦处理器从复位向量地址位置读取到第一条指令开始执行,那么从软件的角度看,处理器和整个系统就开始进入了软件可控状态,系统下面的行为就由软件流程决定,软件要做的第一件事就是初始化整个系统。 系统初始化的一般顺序为: 1)禁止MMU,关闭中断,禁止cache; 2)根据硬件设计配制好处理器时钟、DRAM时钟、定时器时钟; 3)根据系统中所用的flash和DRAM芯片容量和电气参数设置它们的起始地址、容量、刷新频率等; 4)将固化在flash芯片中的程序搬移到DRAM内存中; 5)
[单片机]
ARM处理器模式和片内寄存器, ARM 异常及中断
中断和异常的区别: 中断时从外至内的, 异常时由内发出的 一、存储器格式(字对齐): Arm体系结构将存储器看做是从零地址开始的字节的线性组合。从零字节到三字节放置第一个存储的字(32位)数据,从第四个字节到第七个字节放置第二个存储的字数据,一次排列。作为32位的微处理器,arm体系结构所支持的最大寻址空间为4GB。 存储器格式 1、大端格式:高字节在低地址,低字节在高地址; 2、小端格式:高字节在高地址,低字节在低地址; 指令长度: Arm微处理器的指令长度是32位的,也可以为16位(thumb状态下)。Arm微处理器中支持字节(8位),半字(16位),字(32位)三种数据类型,其中,字需要4字
[单片机]
<font color='red'>ARM处理器</font>模式和片内寄存器, ARM 异常及中断
联合信源推出首款采用ARM处理器的标清解码器
ARM公司与中国国标AVS编解码行业厂商联合信源数字音视频技术(北京)有限公司(联合信源)近日宣布:联合信源成功开发出业界第一款针对采用了NEON™技术的ARM® Cortex™-A8处理器优化的AVS标清解码器。 AVS(GB/T200090.2)是由AVS工作组(中国音视频编解码技术标准工作组)开发的第二代源编/解码标准。这一技术主要解决了对音视频数据进行编码和压缩的难题。自从2006年成为国标以来,许多中国消费电子产品制造商都采用了这一技术。 ARM Cortex-A8处理器是第一款基于ARMv7架构的应用处理器,具有强大的NEON媒体处理扩展集,为媒体编解码提供加速,达到128-bit SIMD的处理
[家用电子]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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