• [^] # Re: Type de compilation ?

    Posté par (site web personnel) . En réponse au message Différence affectation de structure et memcpy. Évalué à 3.

    Je pense que mon extrait est assez complet, voici un diff pour compléter :

    18,32c18,26
    < pushl %edi
    < pushl %esi
    < pushl %ebx
    < subl 176,ドル %esp
    < .loc 1 9 0
    < leal -188(%ebp), %edx
    < leal -100(%ebp), %ebx
    < .cfi_offset 3, -20
    < .cfi_offset 6, -16
    < .cfi_offset 7, -12
    < movl 22,ドル %eax
    < movl %edx, %edi
    < movl %ebx, %esi
    < movl %eax, %ecx
    < rep movsl
    ---
    > andl $-16, %esp
    > subl 192,ドル %esp
    > .loc 1 10 0
    > movl 88,ドル 8(%esp)
    > leal 104(%esp), %eax
    > movl %eax, 4(%esp)
    > leal 16(%esp), %eax
    > movl %eax, (%esp)
    > call memcpy
    36,43c30,31
    < addl 176,ドル %esp
    < popl %ebx
    < .cfi_restore 3
    < popl %esi
    < .cfi_restore 6
    < popl %edi
    < .cfi_restore 7
    < popl %ebp
    ---
    > leave
    > .cfi_restore 5
    46d33
    < .cfi_restore 5
    55c42
    < .long 0x11f
    ---
    > .long 0x11e
    191,192c178,179
    < .byte 0x91
    < .sleb128 -108
    ---
    > .byte 0x74
    > .sleb128 104
    198,200c185,187
    < .byte 0x3
    < .byte 0x91
    < .sleb128 -196
    ---
    > .byte 0x2
    > .byte 0x74
    > .sleb128 16
    
    

    Qu'est-ce qui pourrait être à l'origine de ce problème ? D'ailleurs, j'ai remplacé la structure termios par :

    struct toto {
    int c[17];
    };

    Et j'ai le bug pour une valeur >= 17. En dessous, il ne fait pas de push/pop mais plein de movl.