OpenEdv-开源电子网

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

关于Cortex-M3链接寄存器LR的问题。

[复制链接]

3

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
78
金钱
78
注册时间
2015-6-3
在线时间
8 小时
发表于 2015-11-14 10:08:12 | 显示全部楼层 |阅读模式
5金钱
最近在看《ARM Cortex-M3权威指南》这本书,看到第3章3.14节链接结存器的时候有些迷惑,特来请教。原文如下:
Despite the fact that bit 0 of the program counter is always 0 (because instructions are word
aligned or half word aligned), the LR bit 0 is readable and writable. This is because in the
Thumb instruction set, bit 0 is often used to indicate ARM/Thumb states. To allow the
Thumb-2 program for the Cortex-M3 to work with other ARM processors that support
the Thumb-2 instruction set, this LSB is writable and readable.(原著)
尽管 PC 的 LSB 总是 0(因为代码至少是字对齐的), LR 的 LSB 却是可读可写的。这是历
史遗留的产物。在以前,由位 0 来指示 ARM/Thumb 状态。因为其它有些 ARM 处理器支持
ARM 和 Thumb 状态并存,为了方便汇编程序移植, CM3 需要允许 LSB 可读可写。(译文)

我的问题是:在以前,Thumb指令集中,由位 0 来指示 ARM/Thumb 状态,这点没问题。为了方便移植,Thumb2指令集中指令的第0位设置为可读可写,但是链接寄存器LR保存的是指令的地址,并不是指令本身,为什么要让一个指令地址的第0位可读可写呢?

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
78
金钱
78
注册时间
2015-6-3
在线时间
8 小时
 楼主| 发表于 2015-11-14 10:57:55 | 显示全部楼层
原来在后面的章节中能找到答案,只是我还没有看到。
http://www.stmcu.org/module/forum/thread-602474-1-1.html
这个贴子能很好的解决我的问题,有兴趣的可以看一下。
回复

使用道具 举报

72

主题

2711

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3505
金钱
3505
注册时间
2014-8-4
在线时间
696 小时
发表于 2015-11-14 11:01:18 | 显示全部楼层
对这方面理解比较浅,说一下自己理解

这个位就好比一个标志位,选择正好空闲LSR最低位来标识,用指令的第0位标识会占用指令地址位数,使指令数量受到一定限制且标志位分散不利于管理
以我资质之鲁钝,当尽平心静气、循序渐进、稳扎稳打之力。
回复

使用道具 举报

72

主题

2711

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3505
金钱
3505
注册时间
2014-8-4
在线时间
696 小时
发表于 2015-11-14 11:05:48 | 显示全部楼层
回复【2楼】不说如果:
---------------------------------
一刷新出来了答案,谢谢分享
以我资质之鲁钝,当尽平心静气、循序渐进、稳扎稳打之力。
回复

使用道具 举报

3

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
78
金钱
78
注册时间
2015-6-3
在线时间
8 小时
 楼主| 发表于 2015-11-14 14:21:38 | 显示全部楼层
回复【4楼】龙之谷:
---------------------------------
谢谢关注~
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-20 00:59

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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