1

使用 MicroSemi SoftConsole 4.0 尝试编译和运行 FreeRTOS 演示项目,我遇到了错误“错误指令'[每一行代码]'”。基本上,由于某种原因,没有组装整个文件。我的控制台如下所示:

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% 确定我自己这里发生了什么,所以任何关于可能出了什么问题的解释都会有所帮助。我觉得这不是一个真正的编码问题,而更像是缺乏兼容性问题(可能是不正确的汇编格式?即使我使用的是交叉臂汇编器)。谢谢!

4

2 回答 2

1

看起来不像 ARM 汇编代码。可能的英特尔代码。

于 2016-10-20T23:21:48.313 回答
0

@Richard 是正确的。那是我们的英特尔组件,它有助于在特定英特尔平台上进行加密加速。

您可以通过NO_ASM在 wolfSSL 中添加定义或从项目中排除任何以 .asm 结尾的文件来解决此问题。

于 2017-01-20T00:05:17.640 回答