最佳答案
我正在阅读罗伯特 · 洛夫的《 Linux 内核开发》 ,读到了下面这段话:
浮点数不易使用
当用户空间进程使用浮点指令时,内核管理从整数模式到浮点模式的转换。当使用浮点指令时,内核必须做的事情因体系结构而异,但是内核通常会捕捉到一个陷阱,然后开始从整数模式到浮点模式的转换。
与用户空间不同,内核没有对浮点数的无缝支持,因为它不能轻易地捕获自己。在内核中使用浮点需要手动保存和恢复浮点寄存器,以及其他可能的工作。简短的回答是: 别这么做!除了在极少数情况下,内核中没有浮点操作。
我从来没有听说过这些“整数”和“浮点”模式。它们到底是什么,为什么需要它们?这种区别是存在于主流硬件架构(例如 x86)上,还是特定于某些特殊环境?从进程和内核的角度来看,从整数模式到浮点模式的转换到底需要什么?