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