找回密码
 注册
关于网站域名变更的通知

在arm中执行到B指令跳转的时候,为什么内存恢复原来的数据???

查看数: 338 | 评论数: 2 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2019-7-10 16:47

正文摘要:

. Z: o" A, ?! m6 P) ^- i4 a

回复

yxlk 发表于 2019-7-10 17:38
希望对你有帮助" u2 Y3 O- B7 v6 E1 G. V

0 p( D) \. m$ R; {  }- C8 s首先看看跳转指令B的指令编码情况:: r$ R2 g1 K6 t

9 k/ g8 M6 `& l1 H6 K' U6 c. E2 Q* T

9 w3 R$ v! x2 y+ m2 d. |B指令的编码是这样的
; v$ }' D' j; u8 d/ T31..28:条件码3 b4 M+ _4 u$ w" i
27..25:101
/ y: [- U8 C9 a% R! O3 L& @24:是否链接标志
( i/ i* m1 J& x& @1 e7 T( B23..0:跳转的地址
, Q8 |( w% O. G5 g0 R2 ^$ |# m) _5 B' V9 \- H6 D
也就是说跳转的地址位为23:0位共24位,其中一位为符号位也就只有正负8M的跳转地址而已,32M是怎么来的呢
/ P- w. r7 D7 j, e; |5 M% _# I我是这么理解的,因为ARM中要求指令是字对齐的,也就是32位对齐,指令起始地址末尾两位1:0为00,而寄存器R15程序计数器pc每次跳转地址都要加4,保证了跳转的指令末两位为00,而23:0并不保证这个规律,所以就将这24为左移2位,也就是在末尾加两个0变成了26位,此时其中一位为符号位所能表示的跳转范围就变成了正负32M了% O; e! l" q1 ]; S# x, V
fanichicl 发表于 2019-7-10 17:22
路过帮顶
关闭

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

EDA365公众号

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

GMT+8, 2025-11-24 17:28 , Processed in 0.171875 second(s), 28 queries , Gzip On.

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

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

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