Windows Mobile 6 TI OMAP 3430 プラットフォーム用の Visual Studio 2008 C++03 プロジェクトがあり、ARM Cortex A8 NEON 命令を使用していくつかの機能を最適化したいと考えています。Visual Studio 2008 には、Microsoft ARM アセンブラー 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
プリリンク イベントで次のようにアーム アセンブラを実行します。
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 アセンブラーを使用するための正しい構文は何ですか?