首页 > 解决方案 > 由 gcc 生成的 assemblercode 在由 ARM-assembler 汇编时导致致命错误

问题描述

我发现 ARM 编译器armcc V5.05没有uint64_t正确编译成汇编代码。它只使用一个寄存器而不是两个,因此结果被截断为 32 位(尽管编译器没有抱怨)。作为一种解决方法,我使用了 gcc 编译器,将生成的汇编代码放入单独的 asm 文件并运行 ARM 汇编。由于以下错误,无法创建目标:

此寄存器组合导致不可预测的行为

我想这真的很致命。在函数末尾的 C-“return”语句之后,gcc 在 ASM-return 命令之前插入了一个违​​规SUB SP,R11,#0ADD SP,R11,#0命令BX LR。无论有没有uint64_t. 我可以依赖 gcc 还是 armcc/armasm 中的错误?

标签: gccarmasm

解决方案


推荐阅读