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

中断向量表中不直接 LDR PC,"异常地址"?

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
为什么在中断向量表中不直接 LDR PC,"异常地址"。而是使用一个标号,然有再在后面使用 DCD 定义这个标号。
  u8 \8 u# H- ?- x( P# u$ g

该用户从未签到

2#
发表于 2022-10-9 11:06 | 只看该作者
因为LDR指令只能跳到当前PC 4kB 范围内,而 B 指令能跳转到 32MB 范围,而现在这样在 LDR PC, "xxxx"这条指令不远处,用"xxxx"DCD 定义一个字,而这个字里面存放最终异常服务程序的地址,这样可以实现4GB全范围跳转。

点评

LDR 不是可以全空间跳转的吗? 在ARM 微控制器基础与实战中,程序5.3就有的。!!  详情 回复 发表于 2022-10-9 13:03

该用户从未签到

3#
发表于 2022-10-9 11:19 | 只看该作者
当中断或异常发生的时候,CPU自动将PC指向一个特定的地址,这个地址就是中断向量表。
8 x9 U* I/ L; O" r9 n% V# q# c

该用户从未签到

4#
 楼主| 发表于 2022-10-9 13:03 | 只看该作者
Terran 发表于 2022-10-9 11:065 i) E8 T+ I2 a
因为LDR指令只能跳到当前PC 4kB 范围内,而 B 指令能跳转到 32MB 范围,而现在这样在 LDR PC, "xxxx"这条指 ...
6 ^7 v- ]; ^: z* @. L# h- l
LDR 不是可以全空间跳转的吗?4 k+ R1 E% i% l# j/ ]
在ARM 微控制器基础与实战中,程序5.3就有的。!!
$ t2 V2 ]1 _* T6 q1 a6 M" O) b" g; s: x- T1 w$ ^3 O

点评

LDR 伪指令通过设置指令缓冲池,才能实现全范围跳转,而 LDR 指令则只能实现 4KB 范围跳转。  详情 回复 发表于 2022-10-9 14:06

该用户从未签到

5#
发表于 2022-10-9 14:06 | 只看该作者
Maskman 发表于 2022-10-9 13:032 n" T+ K' b( W
LDR 不是可以全空间跳转的吗?" j1 b/ I# B* `2 P( M1 n* ?7 |
在ARM 微控制器基础与实战中,程序5.3就有的。!!

* n$ @7 s  K0 j$ @1 kLDR 伪指令通过设置指令缓冲池,才能实现全范围跳转,而 LDR 指令则只能实现 4KB 范围跳转。
6 U4 I5 t0 D3 k: m6 f+ x
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-6-16 21:25 , Processed in 0.062500 second(s), 28 queries , Gzip On.

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

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

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