Re: Émulation instruction SSE

トップ ページ

このメッセージに返信
著者: Edgar Bonet
日付:  
To: guilde
題目: 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 ;-)