Cortex-M4内核在v6编译器下 __ASM volatile ("VMSR fpscr, %0" : : "r" (fpscr) : "vfpcc");怎么修改
时间: 2023-07-05 15:20:22 浏览: 232
VC6编译器参数的设置
在v6编译器下,由于Cortex-M4内核已经支持了ARMv8-M架构,因此VFP指令已经被废弃,取而代之的是Advanced SIMD指令集和浮点指令扩展(Floating-Point Extension,FPE)。因此,在Cortex-M4内核上,将原来的VMSR指令更改为VMRS指令,并且需要使用FPEcc修饰符来指定FPEcc控制位的设置。
修改后的语句如下所示:
```c
__ASM volatile ("VMRS fpscr, %0" : : "r" (fpscr) : "fpexc");
```
该语句的作用是将传入的fpscr值写入FPSCR寄存器中,以配置和控制FPU的运算精度和舍入方式等。具体的操作是通过汇编指令 `VMRS fpscr, %0` 实现的,其中 `%0` 表示使用第一个输入参数(即fpscr值)替换指令中的占位符,将fpscr值写入FPSCR寄存器中。
需要注意的是,该语句中使用了 "fpexc" 修饰符,表示该指令依赖于FPEcc控制位的设置。因为在ARMv8-M架构中,VFPcc控制位已经被替换为了FPEcc控制位,因此需要使用 "fpexc" 修饰符来指定控制位的设置。
阅读全文