EDA365电子论坛网

标题: 中断向量表中不直接 LDR PC,"异常地址"? [打印本页]

作者: Maskman    时间: 2022-10-9 09:51
标题: 中断向量表中不直接 LDR PC,"异常地址"?
为什么在中断向量表中不直接 LDR PC,"异常地址"。而是使用一个标号,然有再在后面使用 DCD 定义这个标号。4 Y2 |/ [$ {, @/ m

作者: Terran    时间: 2022-10-9 11:06
因为LDR指令只能跳到当前PC 4kB 范围内,而 B 指令能跳转到 32MB 范围,而现在这样在 LDR PC, "xxxx"这条指令不远处,用"xxxx"DCD 定义一个字,而这个字里面存放最终异常服务程序的地址,这样可以实现4GB全范围跳转。
作者: 名字好听吗    时间: 2022-10-9 11:19
当中断或异常发生的时候,CPU自动将PC指向一个特定的地址,这个地址就是中断向量表。4 }. E; i% g4 c

作者: Maskman    时间: 2022-10-9 13:03
Terran 发表于 2022-10-9 11:069 B/ c! u$ U; j* H  N* t
因为LDR指令只能跳到当前PC 4kB 范围内,而 B 指令能跳转到 32MB 范围,而现在这样在 LDR PC, "xxxx"这条指 ...

3 y# T5 J, h4 `5 Q$ z# p, N- J1 W. BLDR 不是可以全空间跳转的吗?
& G+ N+ @$ O- n- y1 m. K( \4 E在ARM 微控制器基础与实战中,程序5.3就有的。!!0 {4 E( a2 h  [* X6 i9 c" V0 A

% `; x7 D0 F( U
作者: VIC56    时间: 2022-10-9 14:06
Maskman 发表于 2022-10-9 13:03
4 g- u6 j" }. K0 V! `LDR 不是可以全空间跳转的吗?
* k% X% a' h& M6 v8 @8 [在ARM 微控制器基础与实战中,程序5.3就有的。!!
7 ]* ~) [+ ^# t0 m  O
LDR 伪指令通过设置指令缓冲池,才能实现全范围跳转,而 LDR 指令则只能实现 4KB 范围跳转。
( b* j( w* |7 s: j8 X' o4 m. {




欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) Powered by Discuz! X3.2