关于ARM Cortex-M3手册中LDR Rx!,[any]指令表述的疑问
关于ARM Cortex-M3参考手册中
LDR Rx!,[any]表述的疑问解答 你的认知完全正确:ARM Cortex-M3的预索引Load指令标准格式为LDR Rx, [Ry, #n]!,其中!的作用是更新基址寄存器Ry,而非目标寄存器Rx——显然不存在更新目标寄存器的预索引语法,这不符合指令集设计逻辑。
结合手册上下文(描述的是「基址更新加载」的时序特性)来看,LDR Rx!,[any]大概率是笔误,正确表述应该泛指带!的预索引加载指令(即LDR Rx, [Ry, <offset>]!这类会更新基址寄存器的指令)。
手册里提到的时序规则核心逻辑是对的:带基址更新的预索引Load指令通常需要至少2周期,但如果下一条指令(如CMP、TST、NOP、未执行的IT指令)不读取寄存器,就可以省去流水线中相关的依赖检查或寄存器更新步骤,从而缩短为1周期。
内容的提问来源于stack exchange,提问作者Bas
相关产品推荐
相关产品推荐

