我有一个适用于 Windows Mobile 6 TI OMAP 3430 平台的 Visual Studio 2008 C++03 项目,我想在其中使用 ARM Cortex A8 NEON 指令优化一些功能。Visual Studio 2008 包括 Microsoft ARM Assembler v15.00.20720 (armasm.exe)
我在 test.h 中声明了一个函数
extern "C" unsigned __int32 Test();
并在 test.asm 中实现为
ALIGN
Test FUNCTION
EXPORT Test
ldr r0, [r15] ; load the PC value in to r0
mov pc, lr ; return the value of r0
ENDFUNC
我在预链接事件中执行 arm 汇编程序:
armasm.exe -32 -CPU ARM8 test.asm test.obj
但是,我从工具中得到了这些错误
test.asm(4) : error A0064: code inside data section
1> ldr r0, [r14] ; load the PC value in to r0
test.asm(5) : error A0064: code inside data section
1> mov pc, lr ; return the value of r0
test.asm(7) warning : A0063: missing END directive
1>ENDFUNC
使用 Visual Studio ARM 汇编程序的正确语法是什么?