1

我有一个适用于 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 汇编程序的正确语法是什么?

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 回答