NEON 扩展寄存器可以看作 16 个四字或 32 个双字。在大多数编程中,要使用的特定寄存器是固定的。例如,
vmov.i8 d0, 0xff
vmov.i8 d1, 0xee
vmov.i8 d2, 0xdd
在我的问题中,所需的双字寄存器的数量取决于函数调用中的参数。例如,如果参数是 2,我需要做
vmov.i8 d0, 0xff
vmov.i8 d1, 0xee
如果参数是 4,我需要做
vmov.i8 d0, 0xff
vmov.i8 d1, 0xee
vmov.i8 d2, 0xdd
vmov.i8 d3, 0xcc
无论如何选择一个名称基于变量的寄存器?即沿着这条线的东西(以下不是有效的ARM汇编代码):
mov r0, #1
vmov.i8 d{r0}, 0xff