ATTENTION je fais ca de mémoire ca remonte a loin le temps ou je codais en asm x86
donc il peut y avoir des erreurs de ma part
Code qui plante
pushl %ebp ->sauve ebp
movl %esp, %ebp ->recupere addresse stack frame
pushl %edi -> sauve les registrers (consomme donc +12 octet de stack)
pushl %esi
pushl %ebx
subl 176,ドル %esp ->allocation d'espace dans la stack frame (176=2*88) qui doit etre la taille de chaque struct
leal -188(%ebp), %edx ->calcul adresse des structures
leal -100(%ebp), %ebx ->100=88+12 (pose des registre dans la stack)
movl 22,ドル %eax ->taille des data à copier (en dword,22*4=88)
movl %edx, %edi ->destination
movl %ebx, %esi ->source
movl %eax, %ecx ->taille
rep movsl ->copie de 22 dword de -188 à -100 puis incremente
movl 0,ドル %eax ->return 0
addl 176,ドル %esp ->liberation d'espace de pile
popl %ebx ->restoration des registres
popl %esi
popl %edi
popl %ebp
Code qui plante pas
andl $-16, %esp ->align la pile sur 16 octet
subl 192,ドル %esp ->alloue taille 192 octet dans la stack frame (2*88+16)
movl 88,ドル 8(%esp) ->arg 3 88 ->dans la stack
leal 104(%esp), %eax ->calcule une adresse STK+104 (104=88+16)
movl %eax, 4(%esp) ->pose l'adresse en arg2
leal 16(%esp), %eax ->calcul une adresse STK+16
movl %eax, (%esp) ->pose l'adresse en arg1
call memcpy ->apelle sous fonction
movl 0,ドル %eax ->return 0
leave ->oui mais il est ou le ENTER ? a mon avis il manque encore un peut de code en préambule.
[^] # Re: Type de compilation ?
Posté par TheBreton . En réponse au message Différence affectation de structure et memcpy. Évalué à 3.
ATTENTION je fais ca de mémoire ca remonte a loin le temps ou je codais en asm x86
donc il peut y avoir des erreurs de ma part
Code qui plante
Code qui plante pas