Re: Émulation instruction SSE

Top Page

Reply to this message
Author: Edgar Bonet
Date:  
To: guilde
Subject: Re: Émulation instruction SSE
Le samedi 12 janvier, Yves Martin a écrit :
> A ma connaissance, aucun code n'est prévu pour intercepter une
> tentative d'exécution d'une instruction inconnue du processeur. Cela
> finit normalement en "segmentation fault" sur réception de "SIGILL"


Non :
    SIGSEVG = "Segmentation fault",
    SIGILL  = "Illegal instruction".
C'est bien SIGILL, et non SIGSEGV.


Remarque qu'une instruction illégale ne plante pas la machine¹ c'est le
noyau qui reprend la main et c'est lui qui envoie SIGILL au processus.
Ce qui montre bien que l'erreur est « interceptée » par le noyau.

D'ailleurs tu peux même intercepter l'erreur dans un programme, en
déclarant un handler pour le signal SIGILL.

> A mon avis, la seule piste envisageable est une émulation complète
> [...]


Tu peux émuler juste les instructions manquantes. Il me semble que le
noyau comporte déjà du code pour intercepter et émuler les opérations en
virgule flottante sur les vieux processeurs dépourvus d'unité FPU. C.f.
/usr/src/linux/arch/i386/math-emu.

Edgar.

¹ À part « f0 0f c7 c8 » sur certains Pentiums ;-)