提问:msr cpsr_cxsf,r1
2009年09月05日 15:22 发布者:anfaye
mrs r0,cpsrbic r0,r0,#MODEMASK
orr r1,r0,#UNDEFMODE|NOINT
msr cpsr_cxsf,r1
ldr sp,=UndefStack
在启动代码里面有这么一段话,我查了相关资料和解释.大概知道了这段话的作用:
1.把CPSR的东东放到R0寄存器里面,
2.把modemask相关位清零
3.undefmode和noint取或放到R0里面在于R1取或后放到R1里面
4.把R1的东东在放回CPSR_CXSF里面
5.压入undef堆栈里面
我的问题是CPSR是程序状态标志寄存器?那这CPSR_CXSF是啥?:dizzy:
网友评论
geyingzhen 2009年09月06日
应该是CXSF模式下的状态寄存器吧
应该是CXSF模式下的状态寄存器吧
geyingzhen 2009年09月06日
也好像是设置相应的标志位!!!
也好像是设置相应的标志位!!!
geyingzhen 2009年09月06日
对cpsr的操作是采用“读取-修改-写入”的方式。即先用mrs读出,再修改,最后用msr写入cpsr。注意上面写入时用的是cpsr_cxsf,下划线_后面的表示的是“域”的意思,用于设定cpsr中需要操作的位
对cpsr的操作是采用“读取-修改-写入”的方式。即先用mrs读出,再修改,最后用msr写入cpsr。注意上面写入时用的是cpsr_cxsf,下划线_后面的表示的是“域”的意思,用于设定cpsr中需要操作的位
geyingzhen 2009年09月06日
c - control field mask byte (PSR) 控制位域
x - extension field mask byte (PSR)
s - status field mask byte (PSR[23:16)
f - flags field mask byte (PSR).
比如 msr cpsr_c, r1 表示只修改控制位,即cpsr的低8位。具体的可查看cpsr各位的定义。
c - control field mask byte (PSR) 控制位域
x - extension field mask byte (PSR)
s - status field mask byte (PSR[23:16)
f - flags field mask byte (PSR).
比如 msr cpsr_c, r1 表示只修改控制位,即cpsr的低8位。具体的可查看cpsr各位的定义。

是的,楼主请参考《ARM体系结构与编程》一书,那里会有详细讲解