MicroSemi SoftConsole 4.0 を使用して、FreeRTOS デモ プロジェクトをコンパイルして実行しようとすると、「bad instruction '[every lines of code]'」というエラーが発生しました。基本的に、何らかの理由でファイル全体がアセンブルされていません。私のコンソールは次のようになります。
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
などなど(もちろん、読みやすさのために編集した約1000行のコードすべてでエラーが発生します)。ご覧のとおり、私は Cross ARM GNU Assembler ( arm-none-eabi-gcc
) を使用しており、ARM アセンブラー オプションは-x assembler-with-cpp
. 他に何を含める必要があるのか わかりませんが、コマンドラインのどこかに欠けている可能性のあるアセンブラーフラグまたはオプションを誰かが知っている場合、それは非常に役立ちます. ここで何が起こっているのか、私自身も 100% 確信が持てないので、何が問題なのかについての説明も役に立ちます。これは実際にはコーディングの問題ではなく、互換性の欠如の問題に似ているように感じます (おそらくアセンブリ形式が間違っているのでしょうか? クロスアーム アセンブラを使用しているにもかかわらず)。ありがとうございました!