../CORE\core_cmFunc.h(616): error: unknown register name 'vfpcc' in asm __ASM volatile ("VMSR fpscr, %0" : : "r" (fpscr) : "vfpcc");
时间: 2023-07-03 07:29:12 浏览: 82
这个错误是由于使用了不存在的寄存器名称 "vfpcc"。在ARM架构中,"vfpcc"是一个条件码寄存器,只能在VFP指令中使用。但是在这个错误中,"vfpcc"被用作内联汇编中的限定符,它应该被替换为适当的限定符,例如"cc"或"memory"。请检查您的代码,找出使用了"vfpcc"的地方并进行修改。
相关问题
../CORE\core_cmFunc.h(615): error: unknown register name 'vfpcc' in asm怎么解决这个报错
这个错误是由于编译器不支持使用"vfpcc"作为内联汇编代码中的寄存器名称导致的。解决这个问题的方法是使用正确的寄存器名称或修改汇编代码以避免使用该寄存器。
在ARM Cortex-M处理器中,浮点寄存器是通过特殊的寄存器堆栈来管理的。因此,如果您需要在内联汇编代码中使用浮点寄存器,请使用正确的寄存器堆栈。
以下是使用正确的寄存器名称的示例代码:
```
__asm volatile ("VMSR fpscr, %0" : : "r" (fpscr) : "memory");
```
这里使用了"memory"作为占位符,表示内联汇编代码可能会访问内存,以避免编译器优化引起的问题。
如果您无法使用正确的寄存器名称,您可以尝试修改汇编代码以避免使用该寄存器。例如,您可以使用其他寄存器来代替"vfpcc"寄存器。
需要说明的是,修改汇编代码可能会导致代码的功能发生变化,因此您需要仔细检查修改后的代码是否符合您的需求。
把__ASM volatile ("VMSR fpscr, %0" : : "r" (fpscr) : "vfpcc");改成gnu风格
将__ASM volatile ("VMSR fpscr, %0" : : "r" (fpscr) : "vfpcc");改成GNU风格的汇编语言可以使用如下代码:
```
__asm__ volatile ("VMSR fpscr, %0" : : "r" (fpscr) : "vfpcc");
```
其中,__asm__ 是GNU C语言中表示汇编代码的关键字,volatile表示汇编代码是具有副作用的,"VMSR fpscr, %0"是汇编代码,:表示分隔符,"r" (fpscr)表示将C语言变量fpscr传递给汇编代码,"vfpcc"表示使用vfpcc寄存器。