You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ARMv6-M架构BL指令中J1、J2与异或配合计算立即数的原因

ARMv6-M架构BL指令解码中imm32计算的疑问

我正尝试理解ARMv6-M架构中BL指令的解码过程,疑惑点在于imm32的计算环节:I1和I2的值由J1和J2推导而来,但计算方式涉及与符号位S进行异或操作。

ARMv6-M参考手册中BL指令描述下的注释:

注释
在Thumb-2技术引入前,编码T1和T2中的J1和J2均大于1,导致分支范围更小。这些指令可拆分为两条独立的16位指令执行,第一条指令instr1将LR设置为PC + SignExtend(instr1<10:0>:'000000000000', 32),第二条指令完成剩余操作。在ARMv6T2、ARMv6-M和ARMv7中,BL指令无法再拆分为两条16位指令。

ARMv6-M参考手册相关摘录

ARMv6-M架构BL指令编码及imm32计算规则

对比:ARMv4T架构的BL指令

作为对比,以下是仅支持原始16位Thumb编码的ARMv4T(ARM DUI 0100B)中的同一条指令定义:
ARMv4T架构BL指令编码及imm32计算规则

内容的提问来源于stack exchange,提问作者zenprogrammer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 06:32:33