2013-11-14 5 views
2

현재 새로운 arm64 arch에 대한 lib를 컴파일하려고합니다. NEON 어셈블리가 여러 개 있는데 모두 오류가 발생합니다.asm (arm64)에서 알 수없는 레지스터 이름 "q0"

asm에 알 수없는 레지스터 이름 "q0"이 있습니다.

나는이로 떨어지게 간단한 쓰기하더라도 :

asm (
    "" 
    : 
    : 
    : "q0", "q1", "q2", "q3" 
    ); 

나는 arm64는 NEON을 지원합니다 생각했다. 내가 놓친 게 있니?

답변

4

"V0"

scanon$ cat bar.c 
int foo(void) { 
    __asm__("":::"q0"); 
    return 0; 
} 
scanon$ xcrun -sdk iphoneos clang bar.c -arch arm64 -c 
bar.c:2:16: error: unknown register name 'q0' in asm 
    __asm__("":::"q0"); 
      ^
1 error generated. 
scanon$ cat foo.c 
int foo(void) { 
    __asm__("":::"v0"); 
    return 0; 
} 
scanon$ xcrun -sdk iphoneos clang foo.c -arch arm64 -c 
scanon$ 

arm64 새로운 ISA이다. 실제 NEON 명령어 및 레지스터 레이아웃은 완전히 새로운 것입니다. 새로운 아키텍처를위한 어셈블리 코드를 다시 작성하거나 수정해야합니다.

+0

아니요. 같은 오류. – Max

+0

두 레지스터에 모두 오류가 발생합니다. – Max

+0

컴파일중인 실제 코드와 전체 오류 메시지를 게시하십시오. 그러나 앞서 언급했듯이 arm32 어셈블리는 arm64를 위해 많이 수정해야합니다. –