我使用CH32V303,并且需要使用浮点运算。所以我编译时使用 -march=rv32imafc -mabi=ilp32f 来生成代码。
然而我发现这会在中断内生成保存/恢复浮点寄存器的代码,不论是时间还是空间,我都不愉快。
一开始,我重写了高频率发生的中断,抛开外设库,直接操作寄存器,以避免因为调用函数而产生不必要的保存现场的代码。
但这样其他中断依然会有大量不必要的保存/恢复浮点寄存器的代码。
所以,我后来的做法是,代码默认使用 -march=rv32imac -mabi=ilp32 来编译,但涉及到浮点运算的那部分C程序使用了 -march=rv32imafc -mabi=ilp32。毕竟,全局放弃使用硬件浮点,对我而言还是不可接受的。
那么,这种非主流的优化会有什么问题么?
热门产品 :
CH394: 以太网协议栈芯片