Я читаю Robert Love "Linux Kernel Development", и я наткнулся на следующий отрывок:
Нет (простое) использование плавающей точки
Когда в пользовательском пространстве используются команды с плавающей запятой, ядро управляет переходом от целочисленного к режиму с плавающей запятой. То, что ядро должно делать при использовании инструкций с плавающей запятой, зависит от архитектуры, но ядро обычно ловит ловушку, а затем инициирует переход от целочисленного к режиму с плавающей запятой.
В отличие от пользовательского пространства, ядро не имеет роскоши бесшовной поддержки для плавающей точки, потому что оно не может легко заманивать себя. Использование плавающей точки внутри ядра требует ручного сохранения и восстановления регистров с плавающей запятой, среди других возможных задач. Короткий ответ: не делайте этого! За исключением редких случаев, в ядре нет операций с плавающей запятой.
Я никогда не слышал об этих "целых" и "плавающих" режимах. Что именно они и зачем они нужны? Разве это различие существует на основных аппаратных архитектурах (например, x86), или оно специфично для некоторых более экзотических сред? Что именно означает переход от целочисленного к режиму с плавающей запятой, как с точки зрения процесса, так и ядра?