Assembly 使用AARCH64对内存中的数据进行排序?

Assembly 使用AARCH64对内存中的数据进行排序?,assembly,cpu-registers,arm64,Assembly,Cpu Registers,Arm64,地址----M[X6]----M[X6+8]----M[X6+16]----M[X6+24]----M[X6+32] 数据----------740----------811----------492----------773----------424 我如何仅使用STUR和LDUR以及仅使用10行对这些数据进行排序 LDUR X7,[X6,#8] LDUR X8,[X6,#0] STUR X7,[X6,#0] STUR X8,[X6,#8] LDUR X7,[X6,#32] LDUR X8,[

地址----M[X6]----M[X6+8]----M[X6+16]----M[X6+24]----M[X6+32]

数据----------740----------811----------492----------773----------424

我如何仅使用STUR和LDUR以及仅使用10行对这些数据进行排序

LDUR X7,[X6,#8]
LDUR X8,[X6,#0]
STUR X7,[X6,#0]
STUR X8,[X6,#8]
LDUR X7,[X6,#32]
LDUR X8,[X6,#0]
STUR X7,[X6,#0]
STUR X8,[X6,#32]
LDUR X7,[X6,#16]
LDUR X8,[X6,#8]
STUR X7,[X6,#8]
STUR X8,[X6,#16]
我可以这样做3次交换,但那是12行


有更有效的方法吗?

您不需要交换元素。如果有5个寄存器可用,只需加载所有5项并将它们写入正确的位置即可。这正好是10行。或者按降序排序,这样您就可以在末尾留下
424
。顺便说一句,如果您使用
ldp
stp
(加载对和/或存储对)一次加载或存储2个寄存器,您可以使用更少的指令。当按升序排序时,您可以将
773
保留在原处。