Je suis en train de lire l'ouvrage de Robert Love "Linux Kernel Development", et je suis tombé sur le passage suivant :
Pas d'utilisation (facile) de la virgule flottante
Lorsqu'un processus de l'espace utilisateur utilise des instructions en virgule flottante, le noyau gère la transition du mode entier au mode virgule flottante. Ce que le noyau doit faire lorsqu'il utilise des instructions en virgule flottante varie selon l'architecture, mais le noyau attrape normalement un piège et initie alors la transition du mode entier au mode virgule flottante.
Contrairement à l'espace utilisateur, le noyau n'a pas le luxe d'une prise en charge transparente de la virgule flottante, car il ne peut pas facilement se piéger lui-même. L'utilisation d'une virgule flottante au sein du noyau nécessite de sauvegarder et de restaurer manuellement les registres de virgule flottante, parmi d'autres tâches possibles. La réponse courte est la suivante : Ne le faites pas ! Sauf dans de rares cas, aucune opération en virgule flottante n'est effectuée dans le noyau.
Je n'ai jamais entendu parler de ces modes "entier" et "virgule flottante". De quoi s'agit-il exactement et pourquoi sont-ils nécessaires ? Cette distinction existe-t-elle sur les architectures matérielles courantes (telles que x86), ou est-elle spécifique à certains environnements plus exotiques ? Qu'implique exactement une transition du mode entier au mode virgule flottante, à la fois du point de vue du processus et du noyau ?