【发布时间】:2013-04-25 12:15:21
【问题描述】:
在 ARM 汇编中,我有跨寄存器 r3 - r9 的数据。我想使用stm 指令将它们存储回内存,该指令从我在r0 中的地址开始
指令stm r0,{r3-r9} 会将寄存器中的数据彼此相邻放置。
但我想要的是在存储的值之间有 16 字节的间隙,例如执行以下操作:
str r3,[r0]
str r4,[r0,#16]
str r5,[r0,#32]
str r6,[r0,#48]
...
stm 指令可以做到这一点还是有一些捷径?
【问题讨论】:
-
STM指令允许您指定目标地址应该向下还是向上增长,但不能指定步幅应该是多少(它将是寄存器的大小,即一个字)。因此,您可能不得不使用一些替代解决方案,例如您自己建议的解决方案。 -
谢谢您的评论.. 那么也许有一些技巧而不是 8 个 STR?
-
这对于 NEON 和交错加载和回写是可行的。 (好吧,虽然 7 个寄存器是个坏数字。)