Quelle est la signification de chaque ligne de l'assemblée de la sortie d'un C bonjour à tout le monde?

J'ai couru gcc-S au cours de cette:

int main()
{
printf ("Hello world!");
}

et j'ai eu cette assemblée de code:

        .file   "test.c"
        .section        .rodata
.LC0:
        .string "Hello world!"
        .text
.globl main
        .type   main, @function
main:
        leal    4(%esp), %ecx
        andl    $-16, %esp
        pushl   -4(%ecx)
        pushl   %ebp
        movl    %esp, %ebp
        pushl   %ecx
        subl    $20, %esp
        movl    $.LC0, (%esp)
        call    printf
        addl    $20, %esp
        popl    %ecx
        popl    %ebp
        leal    -4(%ecx), %esp
        ret
        .size   main, .-main
        .ident  "GCC: (GNU) 4.3.0 20080428 (Red Hat 4.3.0-8)"
        .section        .note.GNU-stack,"",@progbits

Je suis curieux de comprendre cette sortie. Quelqu'un peut-il partager quelques conseils dans la compréhension de cette sortie, ou si quelqu'un pourrait marquer des commentaires à l'encontre de chacune de ces lignes/groupe de lignes pour expliquer ce qu'il fait, il serait grand.

InformationsquelleAutor Mohammed | 2011-03-16