找回密码
 注册
关于网站域名变更的通知
查看: 447|回复: 2
打印 上一主题 下一主题

恢复新任务工作寄存器和工作模式,指令是不是可以去掉?

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2022-11-16 10:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
在《ARM 微控制器基础与实战》程序清单 6.22 的 376 页的 OSIntCtxSW_1 中: LDR R4, [R6]
0 I; P4 C0 r9 \, Y# C9 g( U! qADD SP, R4, #68 ) q+ k% i1 O; z/ B) L
LDR LR, [SP, #-8] % ^% k8 C0 a1 x$ `/ p7 P9 _
MSR CPSR_c, #(NoInt | SVC32Mode) - ]8 [! G+ E0 E
MOV SP, R4 LDMFD SP!, {R4,R5}
7 {, n8 V: m9 q. ]. \LDR R3, =OsEnterSum
# g# F% c6 c/ {; H! _1 wSTR R4, [R3]
. I7 h: U2 D: N0 V! u' xMSR SPSR_cxsf, R5 ( u  q  F2 ~8 t+ t" R: A
LDMFD SP!, {R0-R12, LR, PC }^
$ {9 K& \6 Q) O& [* J. u4 u请问高手DMFD SP!, {R0-R12, LR, PC }^是不是恢复新任务工作寄存器和工作模式,LR 寄存器一并得到恢复,那么 ADD 指令后面的 LDR LR, [SP, #-8] 指令是不是可以去掉
% e7 l, M' P* j8 o; g% l) @8 A: g( b3 X# y2 o' t6 }7 K

该用户从未签到

2#
发表于 2022-11-16 11:21 | 只看该作者
两者恢复的是两个不同处理器模式的 LR.

该用户从未签到

3#
发表于 2022-11-16 13:19 | 只看该作者
ARM 处理器一般共有 37 个寄存器,( x8 j: O0 Z  ?0 B9 e$ @: o! d
31 个通用寄存器,包括 PC(程序计数器)在内,都是 32 位的寄存器。9 T! u4 K4 R6 v8 D$ B  i4 o$ O
6 个状态寄存器,都是 32 位的寄存器。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-9-7 14:40 , Processed in 0.109375 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

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