2017-05-17 3 views
-1

Ich schrieb eine ARM NEON Funktion in eine einzelne Datei csc_rotation.S, um die Farbraumkonvertierung durchzuführen, und fügte die reine Assemblydatei in ein iOS App - Projekt ein, um sie zu testen Code unter Armv7 Arch auf Xcode.Kompilieren von NEON - Code auf xcode 8.3.2

Dann habe ich diese Fehler:

.text 
csc_rotation.S:3:1: Cannot use dot operator on a type 

ldr r4, [sp, #24] //Save width to r4 
csc_rotation.S:20:1: Unknown type name 'ldr' 
csc_rotation.S:20:15: Expected identifier 
csc_rotation.S:20:19: Expected ';' after top level declarator 

image_rotate_180D_neon(y_ptr, y_stride, x_ptr, x_stride, width, height); 
i420_888.cpp:536:5: Use of undeclared identifier 'image_rotate_180D_neon' 

Es scheint LLVM können die Neon-Assembler-Code nicht kompilieren? Können Sie mir helfen?

+0

Sie sollten Assemblercode * überhaupt nicht zusammenstellen. Du sollst es zusammensetzen. Wer hätte das gedacht? – EOF

+0

Welche Befehle führen Sie aus, um den Assemblercode zu "kompilieren"? – fuz

Antwort

0

Ja, Sie können die __asm__ Direktive verwenden.

Zum Beispiel wie folgt aus:

-(int) roundff:(float)a { 
    int y; 
    __asm__("fcvtzs %w0, %s1\n\t" : "=r"(y) : "w"(a)); 
    return y; 
} 

Allerdings, wenn Sie in Xcode NEON Code schreiben möchte ich die Spezifika von including->

#include <arm_neon.h> 

Auch zu verwenden empfehlen verwenden:

#ifdef __arm__ //AArch32 
#ifdef __arm64__ //AArch64 

die Architekturen zu trennen, wenn Ihr Ziel unbekannt ist.

/A

Verwandte Themen