嵌入式系统中的浮点运算与Neon技术详解
1. 条件执行
条件代码的精确含义取决于其是由浮点运算还是ARM数据处理指令设置的。由于浮点值没有无符号的概念,所以无符号条件在此无意义。唯一能更新状态标志的VFP指令是VCMP,它会设置FPSCR中的相关位。不过,条件标志和指令由APSR(应用程序状态寄存器 - CPSR)控制,因此需要将FPSCR标志复制到APSR中,可使用指令 VMRS APSR_nzcv, FPSCR 完成此操作。
VCMP指令有 .F32 和 .F64 两种类型,示例如下:
VCMP.F32 S0, S1 @ S0 - S1并设置条件标志
VCMP.F64 D2, D3 @ D2 - D3并设置条件标志
可以使用 VMRS R4, FPSCR 将FPSCR的全部内容传输到ARM寄存器,也能使用 VMSR FSPCR, R4 将ARM寄存器的内容加载到FPSCR中。
使用条件执行的一大好处是减少分支指令的数量,从而减小代码的整体大小。分支指令在执行时间上开销较大,通常需要三个周期来重新填充处理器流水线。例如:
VADDEQ.F32 S0, S1, S2 @ 仅当C = 1时执行
VSUBNE.F64 D0, D2, D4 @ 仅当为负数时执行
以下是ARM指令和
超级会员免费看
订阅专栏 解锁全文
1250

被折叠的 条评论
为什么被折叠?



