• [^] # Re: Quelques infos

    Posté par . En réponse au journal Comment les programmeurs écrivent du code flottant ?. Évalué à 3.

    J'ai fait le test avec icc. Voilà ce qui en résulte :

    code :


    /* elim.c */
    double elim(double a, double b) {
    __double tmp;
    __tmp = a+b-a;
    __return tmp;
    }

    /* elim2.c */
    double elim2(double a, double b) {
    __double tmp;
    __tmp = (a+b)-a;
    __return tmp;
    }



    ; code généré par icc quelle que soit la version
    ; xmm0 = a, xmm1 = b
    __subsd xmm0, xmm0
    __addsd xmm1, xmm0
    __ret

    ; code généré par gcc
    ; elim2() :
    __addsd %xmm0, %xmm1
    __subsd %xmm0, %xmm1
    __movapd %xmm1, %xmm0
    __ret

    ; elim()
    __movl %esi, %eax
    ret


    Comme quoi, sur des cas simples, les compilateurs se débrouillent ...