|
希望对你有帮助" u2 Y3 O- B7 v6 E1 G. V 首先看看跳转指令B的指令编码情况:: r$ R2 g1 K6 t 6 K' U6 c. E2 Q* T B指令的编码是这样的 31..28:条件码3 b4 M+ _4 u$ w" i 27..25:101 24:是否链接标志 23..0:跳转的地址 # m) _5 B' V9 \- H6 D 也就是说跳转的地址位为23:0位共24位,其中一位为符号位也就只有正负8M的跳转地址而已,32M是怎么来的呢 我是这么理解的,因为ARM中要求指令是字对齐的,也就是32位对齐,指令起始地址末尾两位1:0为00,而寄存器R15程序计数器pc每次跳转地址都要加4,保证了跳转的指令末两位为00,而23:0并不保证这个规律,所以就将这24为左移2位,也就是在末尾加两个0变成了26位,此时其中一位为符号位所能表示的跳转范围就变成了正负32M了% O; e! l" q1 ]; S# x, V |
| 路过帮顶 |
/1
关于我们|手机版|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