OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4754|回复: 3

CM3中PC寄存器的LSB为什么读取总是0

[复制链接]

4

主题

13

帖子

0

精华

新手上路

积分
40
金钱
40
注册时间
2013-11-5
在线时间
15 小时
发表于 2016-3-1 21:34:54 | 显示全部楼层 |阅读模式
今天在看文档时候,有一句话是说 由于CM3中指令至少是半字对齐,所以PC的LSB读取总是0,这是为什么呢?  那假如我写1的话,难道读回来也是0??
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

18

主题

422

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1139
金钱
1139
注册时间
2014-5-24
在线时间
116 小时
发表于 2016-3-1 21:45:47 | 显示全部楼层
PC(R15)Bit0用来表示处理器状态,M3核中值为1
I See Fire.·.·.·.·.·.·.·.·.·.·.·.·.·.·.·.·.·.·.·.  只给方向,不妨碍思考
回复 支持 反对

使用道具 举报

6

主题

1097

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3571
金钱
3571
注册时间
2014-12-2
在线时间
365 小时
发表于 2016-3-2 12:54:16 | 显示全部楼层
本帖最后由 xkwy 于 2016-3-2 12:55 编辑

ARM处理器有两种状态:ARM状态指令长度是32位,THUMB状态指令长度为16位。
所以无论如何PC的bit[0]是用不到的,
然而这么个位恰好用来切换ARM和THUMB两种状态。
如果bit[0]=1,则进入THUMB状态,否则进入ARM状态

然而Cortex只支持THUMB状态,所以bit[0]不得为0:


m3.png

rps.png

ts.png

仿真为证:
sp-pc.png

/*
0x0-0x3内容是0x20000428,为SP初始值,
0x4-0x7内容是0x08000101,为PC初始值
*/

以上资料来自ARM Cortex-M3 Generic User Guide.pdf

想详细了解可拜读一下:
ARM Cortex-M3 Generic User Guide.pdf
ARM Cortex-M3 Technical Reference Manual.pdf



坚决不用寄存器,拒绝重复造轮子。
回复 支持 反对

使用道具 举报

4

主题

13

帖子

0

精华

新手上路

积分
40
金钱
40
注册时间
2013-11-5
在线时间
15 小时
 楼主| 发表于 2016-3-4 14:57:47 | 显示全部楼层
xkwy 发表于 2016-3-2 12:54
ARM处理器有两种状态:ARM状态指令长度是32位,THUMB状态指令长度为16位。
所以无论如何PC的bit[0]是用不到 ...

明白了 好详细的说呀,谢谢大神了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-21 02:46

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表