0

以下 ARM 指令在一条指令中将多个浮点寄存器存储在内存中(当然,在每个寄存器存储之后递增基地址):

VSTMIA R0! {S1-S4}

现在的问题是寄存器列表必须是连续的,即如果你想在 R0 中传输寄存器,例如 R0 中的 S1,R0 + 4 中的 S3,你不能在不调用单个存储的情况下做到这一点。我有几个寄存器想一次性存储在内存中,但问题是它们需要以不同的顺序存储。我真的不想交换寄存器(我有大约 7 个寄存器)。那么有没有更聪明的方法呢?还想知道是否有人知道使用 VSTM 进行单次多次传输是否比使用单个 VSTR 指令进行多次传输更快?

4

1 回答 1

0

您忘记提及您正在使用的 CPU 架构。如果您为 NEON 编写代码,请查看 ARM 博客中的此页面:为 NEON 编码 - 第 5 部分:重新排列向量

编辑:
使用 VSTM 进行单次多次传输是否比使用单个 VSTR 指令进行多次传输更快?

可能,但不要相信任何人的话。您最好的选择是分析您的代码并查看您的核心的技术参考手册

于 2012-09-21T00:15:54.163 回答