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