注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

zpehome的博客

Hope is a good thing,the best of things

 
 
 

日志

 
 

CPSR_cxsf 的含义  

2013-02-25 14:45:02|  分类: 嵌入式软件 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
msr cpsr_cxsf,r1 ;这里的cxsf表示从低到高分别占用的4个8bit的数据域 

指令中有时还有出现cpsr_cf, cpsr_all, cpsr_c等,这里: 

c 指 CPSR中的control field ( PSR【7:0】) 
f 指 flag field (PSR【31:24】) 
x 指 extend field (PSR【15:8】) 
s 指 status field ( PSR【23:16】) 

其中cpsr的位表示为: 
31 30 29 28 --- 7 6 - 4 3 2 1 0 
N Z C V I F M4 M3 M2 M1 M0 

0 0 0 0 0 User26 模式 
0 0 0 0 1 FIQ26 模式 
0 0 0 1 0 IRQ26 模式 
0 0 0 1 1 SVC26 模式 
1 0 0 0 0 User 模式 
1 0 0 0 1 FIQ 模式 
1 0 0 1 0 IRQ 模式 
1 0 0 1 1 SVC 模式 
1 0 1 1 1 ABT 模式 
1 1 0 1 1 UND 模式 

深入分析: 
对于MSR(寄存器到状态寄存器)的指令, 
MSR CPSR, r0 
MSR CPSR_all, r0 
MSR CPSR_flg, r0 
都是已经过时的表示方法。 
对于MRS(状态寄存器到寄存器)的指令, 
MRS R0, CPSR 等同于MRS R0, CPSR_cxsf 
MRS R0, CPSR_all 会有waring 
MRS R0, CPSR_flg 会有错误 
在ADS中使用c,f,x,s表示cpsr的各个部分是推荐的。从指令来说: 
MSR CPSR_f, r0机器码为0xe128f000 
MSR CPSR_c, r0机器码为0xe121f000 
MSR CPSR_x, r0机器码为0xe122f000 
MSR CPSR_s, r0机器码为0xe124f000 
可见机器码中用bit【29:16】4bit表示是f,c,x,s的。所以能够在机器执行的时候, 
给予不同的执行结果。为了代码向后兼容性,建议使用f,c,x,s尾缀。 

关于CPSR的条件位 
31 30 29 28 27 ~ 8 7 6 5 4 3 2 1 0 
N Z C V 保留 I F T M4 M3 M2 M1 M0 

N——Negative/Less Than I IRQ disable 
Z ——Zero F FIQ disable 
C ——Carry/Borrow/Extend T State bit 
V ——Overflow M0~4 Mode bits 


1、条件码标志 

N、Z、C、V均为条件码标志位。它们的内容可被算术或逻辑运算的结果所改变,并且可以决定某条指令是否被执行。条件码标志各位的具体含义如下表所示: 


标志位 含 义 
N 当用两个补码表示的带符号数进行运算时,N=1表示运算的结果为负数;N=0表示运算的结果为正数或零 
Z Z=1表示运算的结果为零,Z=0表示运算的结果非零。 
C 可以有4种方法设置C的值: 
-加法运算(包括CMP):当运算结果产生了进位时(无符号数溢出),C=1,否则C=0。 
-减法运算(包括CMP):当运算时产生了借位时(无符号数溢出),C=0,否则C=1。 
-对于包含移位操作的非加/减运算指令,C为移出值的最后一位。 
-对于其它的非加/减运算指令,C的值通常不会改变。 
V 可以有2种方法设置V的值: 
-对于加减法运算指令,当操作数和运算结果为二进制的补码表示的带符号数时,V=1表示符号位溢出 
-对于其它的非加/减运算指令,V的值通常不会改变。 
Q 在ARM V5及以上版本的E系列处理器中,用Q标志位指示增强的DSP运算指令是否发生了溢出。在其它版本的处理器中,Q标志位无定义 



在ARM状态下,绝大多数的指令都是有条件执行的;在THUMB状态下,仅有分支指令是条件执行的。 

2 控制位 

CPSR的低8位(包括I、F、T和M【4:0】)称为控制位,当发生异常时这些位可以被改变。如果处理器运行于特权模式时,这些位也可以由程序修改。 

·中断禁止位I、F:置1时,禁止IRQ中断和FIQ中断。 

·T标志位:该位反映处理器的运行状态。当该位为1时,程序运行于THUMB状态,否则运行于ARM状态。该信号反映在外部引脚TBIT上。在程序中不得修改CPSR中的TBIT位,否则处理器工作状态不能确定。 

·运行模式位M【4:0】:这几位是模式位,这些位决定了处理器的运行模式。具体含义如下表所示: 

·保留位:CPSR中的其余位为保留位,当改变CPSR中的条件码标志位或者控制位时,保留位不要改变,在程序中也不要用保留位存储数据。保留位将用于ARM版本的扩展。 


M【4:0】 处理器模式 ARM模式可访问的寄存器 THUMB模式可访问的寄存器 
0b10000 用户模式 PC,CPSR,R0~R14 PC,CPSR,R0~R7,LR,SP 
0b10001 FIQ模式 PC,CPSR,SPSR_fiq,R14_fiq~R8_fiq,R0~R7 PC,CPSR,SPSR_fiq,LR_fiq,SP_fiq,R0~R7 
0b10010 IRQ模式 PC,CPSR,SPSR_irq,R14_irq~R13_irq,R0~R12 PC,CPSR,SPSR_irq,LR_irq,SP_irq,R0~R7 
0b10011 管理模式 PC,CPSR,SPSR_svc,R14_svc~R13_svc,R0~R12 PC,CPSR,SPSR_svc,LR_svc,SP_svc,R0~R7 
0b10111 中止模式 PC,CPSR,SPSR_abt,R14_abt~R13_abt,R0~R12 PC,CPSR,SPSR_abt,LR_abt,SP_abt,R0~R7 
0b11011 未定义模式 PC,CPSR,SPSR_und,R14_und~R13_und,R0~R12 PC,CPSR,SPSR_und,LR_und,SP_und,R0~R7 
0b11111 系统模式 PC,CPSR,R0~R14 PC,CPSR,LR,SP,R0~R74
  评论这张
 
阅读(195)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017