Después de leer el manual de ARM Compiler versión 5 , se dice que para los dispositivos sin unidad de punto flotante, los flotadores son a través de implementaciones de software, lo que probablemente será más lento que tener una unidad de hardware.
Sin embargo, no pude encontrar ninguna información sobre cómo el ARM Compiler 5 manejaría las flotaciones de doble precisión en dispositivos con FPU de precisión simple. Mi suposición sería que también usaría una implementación de software como si la FPU no existiera, pero en mi código, intenté ver el desensamblaje, ¡y parece que se están utilizando las instrucciones específicas de la FPU!
Por ejemplo,
696: spectral_line[2] = 6869.955; /* B */
0x0800250A ED9F0B81 VLDR d0,[pc,#0x204]
0x0800250E ED800B04 VSTR d0,[r0,#0x10]
este segmento de código de ensamblaje anterior fue generado por el compilador ARM 5, ¡aunque spectral_line
es una matriz de dobles!
¿Cómo / qué hace el compilador aquí para manejar los números de doble precisión?