• [^] # Re: Heisenbug...

    Posté par . En réponse au journal printf debugging considered harmful. Évalué à 3.

    En fait c'est bel et bien un bug linux, et le problème vient de là :


    hl054353@ingvsx3j:/usr/include$ grep "FPU_DEFAULT" /usr/include/x86_64-linux/fpu_control.h
    #define _FPU_DEFAULT 0x037f


    Donc si tu transformes le code de la manière suivante :


    void set_fpu(unsigned int mode)
    {
    asm ("fldcw %0" : : "m" (*&mode));
    }


    int main(int argc, char *argv[])
    {
    set_fpu (0x27F);

    int a = 10;
    printf("%d %d\n",
    (int)( a*.3 + a*.7),
    (int)(10*.3 + 10*.7));
    return 0;
    }


    là tu auras bien les bons résultats, comme sur n'importe quel microprocesseur, ou n'importe quel autre un*x sur x86.