2016-10-20 10 views
1

MicroSemi SoftConsole 4.0을 사용하여 컴파일되고 실행되는 FreeRTOS 데모 프로젝트를 얻으 려하고 "잘못된 명령어 '[모든 코드 행]'오류가 발생했습니다. 기본적으로 전체 파일은 어떤 이유로 든 조립되지 않습니다. 내 콘솔은 다음과 같습니다SoftConsole 4.0 "잘못된 명령어"어셈블러

Building file: ../FreeRTOS-Plus/WolfSSL/wolfcrypt/src/aes_asm.asm 
Invoking: Cross ARM GNU Assembler 
arm-none-eabi-gcc -mcpu=cortex-m3 -mthumb -O2 -g -x assembler-with-cpp -MMD -MP -MF"FreeRTOS-Plus/WolfSSL/wolfcrypt/src/aes_asm.d" -MT"FreeRTOS-Plus/WolfSSL/wolfcrypt/src/aes_asm.o" -c -o "FreeRTOS-Plus/WolfSSL/wolfcrypt/src/aes_asm.o" "../FreeRTOS-Plus/WolfSSL/wolfcrypt/src/aes_asm.asm" 
../FreeRTOS-Plus/WolfSSL/wolfcrypt/src/aes_asm.asm: Assembler messages: 
../FreeRTOS-Plus/WolfSSL/wolfcrypt/src/aes_asm.asm:37: Error: bad instruction `_text SEGMENT' 
../FreeRTOS-Plus/WolfSSL/wolfcrypt/src/aes_asm.asm:38: Error: bad instruction `aes_cbc_encrypt PROC' 
../FreeRTOS-Plus/WolfSSL/wolfcrypt/src/aes_asm.asm:46: Error: bad instruction `save rdi and rsi to rax and r11,restore before ret' 
../FreeRTOS-Plus/WolfSSL/wolfcrypt/src/aes_asm.asm:47: Error: ARM register expected -- `mov rax,rdi' 
../FreeRTOS-Plus/WolfSSL/wolfcrypt/src/aes_asm.asm:48: Error: immediate expression requires a # prefix -- `mov r11,rsi' 
../FreeRTOS-Plus/WolfSSL/wolfcrypt/src/aes_asm.asm:50: Error: bad instruction `convert to what we had for att&t convention' 
../FreeRTOS-Plus/WolfSSL/wolfcrypt/src/aes_asm.asm:51: Error: ARM register expected -- `mov rdi,rcx' 
../FreeRTOS-Plus/WolfSSL/wolfcrypt/src/aes_asm.asm:52: Error: ARM register expected -- `mov rsi,rdx' 
../FreeRTOS-Plus/WolfSSL/wolfcrypt/src/aes_asm.asm:53: Error: ARM register expected -- `mov rdx,r8' 
../FreeRTOS-Plus/WolfSSL/wolfcrypt/src/aes_asm.asm:54: Error: ARM register expected -- `mov rcx,r9' 
../FreeRTOS-Plus/WolfSSL/wolfcrypt/src/aes_asm.asm:55: Error: immediate expression requires a # prefix -- `mov r8,[rsp+40]' 
../FreeRTOS-Plus/WolfSSL/wolfcrypt/src/aes_asm.asm:56: Error: ARM register expected -- `mov r9d,[rsp+48]' 
../FreeRTOS-Plus/WolfSSL/wolfcrypt/src/aes_asm.asm:58: Error: bad instruction `end' 
FreeRTOS-Plus/WolfSSL/wolfcrypt/src/subdir.mk:161: recipe for target 'FreeRTOS-Plus/WolfSSL/wolfcrypt/src/aes_asm.o' failed 
make: *** [FreeRTOS-Plus/WolfSSL/wolfcrypt/src/aes_asm.o] Error 1 

등 등 (그것이 나에게 나는 물론 가독성을 위해 밖으로 편집 한 코드의 거의 모든 1000ish 라인에 대한 오류를 제공). 주목할 수 있듯이 크로스 ARM GNU 어셈블러 (arm-none-eabi-gcc)를 사용 중이며 내 ARM 어셈블러 옵션은 -x assembler-with-cpp입니다. 내가 포함 할 필요가있는 것이 무엇인지 모르겠지만 누군가가 잠재적 인 어셈블러 플래그 또는 옵션을 알고있는 경우 커맨드 라인의 어딘가에서 누락되었을 수 있으므로 매우 유용 할 것입니다. 나는 심지어 여기에 무슨 일이 일어나고 있는지 100 % 확신하지 못하기 때문에 무엇이 잘못 될지에 대한 설명도 도움이 될 것입니다. 나는 이것이 정말로 코딩 문제는 아니지만 호환성 문제 (아마도 잘못된 어셈블리 형식 일까? 크로스 - 팔 어셈블러를 사용하고 있음)의 부족과 같은 느낌입니다. 고맙습니다!

+0

어셈블하려고하는 파일은 ARM 용이 아니며 x86 용입니다. 그것은 작동하지 않습니다. – Jester

+0

@Jester 그것이 내가 생각했던 것입니다.하지만 제가 Richard에게 말했던 것처럼, 그것은 ARM 보드를위한 소프트웨어 프로젝트에 포함되어있었습니다. 이것은 혼란 스럽습니다. – Justin

+0

나는 체크하지 않았지만 그 프로젝트는 크로스 플랫폼이거나 아니면 다른 곳의 코드를 포함 할 수도있다. 어쩌면 컴파일하려고하는 코드가 실제로 ARM 전용 또는 일반 C 버전을 가지고있을 수도 있습니다. 빌드 시스템이 잘못 컴파일하여 컴파일합니다. – Jester

답변

1

ARM asm 코드처럼 보이지 않습니다. 가능한 인텔 코드.

+0

@ 리차드 나는 x86 코드라고 느꼈지만 임베디드 보드 (ARM 프로세서를 사용하는)를위한 큰 파일 시스템에 포함되어있어 혼란 스럽습니다. – Justin

0

@ 리차드가 정확합니다. 인텔 인텔 어셈블리는 특정 인텔 플랫폼에서 암호화 가속을 지원합니다.

wolfSSL에 NO_ASM 정의를 추가하거나 프로젝트에서 .asm으로 끝나는 파일을 제외하여이 문제를 해결할 수 있습니다.