Использование плавающей запятой в ядре Linux

Я читаю «Разработка ядра Linux» Роберта Лава и натолкнулся на следующий отрывок:

Нет (простое) использование плавающей запятой

Когда процесс пользовательского пространства использует инструкции с плавающей запятой, ядро управляет переходом из целочисленного в режим с плавающей запятой. То, что должно делать ядро при использовании инструкций с плавающей запятой, зависит от архитектуры, но ядро обычно перехватывает ловушку и затем инициирует переход из целочисленного в режим с плавающей запятой.

В отличие от пользовательского пространства, ядро не может позволить себе плавную поддержку с плавающей запятой, поскольку оно не может легко перехватить себя. Использование плавающей запятой внутри ядра требует ручного сохранения и восстановления регистров с плавающей запятой, среди прочих возможных рутинных операций. Краткий ответ:Не делай этого! За исключением редких случаев, в ядре нет операций с плавающей точкой.

Я никогда не слышал об этих «целочисленных» и «плавающих» режимах. Что именно они и зачем они нужны? Существует ли это различие в основных аппаратных архитектурах (таких как x86) или оно характерно для более экзотических сред? Что именно влечет за собой переход от целочисленного к режиму с плавающей запятой, как с точки зрения процесса, так и ядра?

Ответы на вопрос(2)

Ваш ответ на вопрос