2012-12-07 93 views
0

我有一个用于Windows Mobile 6的Visual Studio 2008 C++ 03项目,我想实现ARM-NEON版本的memcpy。在传统设备上使用ARM NEON指令

ARM Info Center好心提供了一个实现:

; NEON memory copy with preload 
NEONCopyPLD 
     PLD [r1, #0xC0] 
     VLDM r1!,{d0-d7} 
     VSTM r0!,{d0-d7} 
     SUBS r2,r2,#0x40 
     BGE NEONCopyPLD 

不幸的是,VS2008 ARM汇编程序不支持NEON指令集(虽然我的处理器的ARM Cortex-A8为基础)。

有没有什么办法可以为这些指令提供字节码,以便ARM汇编程序能够接受它?我可以在DCB或DCD中使用正确的值吗?

感谢

回答

1

可以使用DCI指令为 “六角说明”:

http://msdn.microsoft.com/en-us/library/ms863606.aspx

+0

也许我用错了,但是当我更换'DCI 0xE1A00000的VLDM命令; mov r0,r0'(占位符,直到我可以获得VLDM操作码)我得到“错误A0051:未知操作码:DCI” – PaulH

+1

[RVCT汇编指南](http://infocenter.arm.com/help/index .jsp?topic =/com.arm.doc.dui0204j/index.html)列出了一些。在ARM模式下,'DCD'相当于'DCI';或者'DCB'也应该工作。 –

+0

谢谢。我有时间找到LVDM和VSTM(NEON指令)的ARM操作码。你能为这些人建议一个资源吗? ARM ARM是“受限访问”http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0406b/index.html – PaulH