用于在内存中存储多个寄存器的ARM指令

时间:2012-09-20 23:15:50

标签: assembly arm

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

VSTMIA R0! {S1-S4}

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

1 个答案:

答案 0 :(得分:0)

您忘了提及您正在使用的CPU架构。如果您为NEON编写代码,请查看ARM博客中的此页面:Coding for NEON - Part 5: Rearranging Vectors

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

可能,但不要任何人说出来。您最好的选择是分析您的代码并检查Technical Reference Manual核心。