1

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 アセンブラーを使用するための正しい構文は何ですか?

4

1 に答える 1

2

ARMASM は、多くのオプションがデフォルトで適切な値に設定されているため、非常に簡単に使用できます。動作するコードのバージョンは次のとおりです。

  AREA my_test, CODE, READONLY  ; name this block of code
  EXPORT test

test proc      ; start of a procedure
     ldr r0,[r15]
     mov pc,lr
     endp      ; end of a procedure

     end       ; end of the file

更新:「エリア」を含めるのを忘れました

于 2012-06-25T22:25:35.990 に答える