我正在阅读Robert Love的“ Linux内核开发”,并且遇到了以下段落:
无需(轻松)使用浮点数
当用户空间进程使用浮点指令时,内核将管理从整数到浮点模式的转换。内核在使用浮点指令时必须执行的操作因体系结构而异,但是内核通常会捕获陷阱,然后启动从整数模式到浮点模式的转换。
与用户空间不同,内核没有对浮点的无缝支持的奢侈之处,因为它无法轻易地陷入陷阱。在内核内部使用浮点数需要手动保存和恢复浮点数寄存器,以及其他可能的琐事。简短的答案是:不要这样做!除了极少数情况,内核中没有浮点运算。
我从未听说过这些“整数”和“浮点”模式。它们到底是什么?为什么需要它们?这种区别是否存在于主流硬件体系结构(例如x86)上,还是特定于某些更特殊的环境?从进程和内核的角度来看,从整数模式到浮点模式的转换到底需要什么?