Nommage de la fonction main() en assembleur

Page principale

Répondre à ce message
Auteur: Patrice Karatchentzeff
Date:  
À: GUILDE
Sujet: Nommage de la fonction main() en assembleur
Salut,

Quand gcc compile un programme en C, il semble qu'il garde le nom de
main du C pour l'assembleur.

Soyons follement original :

#include <stdio.h>

int main(void) {
    printf("Hello, world!\n");
    return 0;
}


donne *en assembleur* (gcc -s) :

(...)
      .text
LC0:
        .ascii "Hello, world!\12\0"
.globl _main
        .def    _main;  .scl    2;      .type   32;     .endef
_main:
        pushl   %ebp
        movl    %esp, %ebp
etc.


Donc au début du programme, le main est bien référencé en _main.

Dont acte.

Pourtant, si je compile et que je désassemble le binaire compilé, je
ne retrouve pas cette fonction. Au mieux, j'ai un .init dedans qui
semble être la même chose.

J'ai fait un grep dans toutes les gnuteries de mon système et c'est pareil.

Alors, j'ai deux questions :

* main = .init ?
* est-ce une règle ? Je ne trouve rien sur le net à ce sujet...

Merci de vos lumières,

PK


-- 
      |\      _,,,---,,_           Patrice KARATCHENTZEFF
ZZZzz /,`.-'`'    -.  ;-;;,_   mailto:patrice.karatchentzeff@gmail.com
     |,4-  ) )-,_. ,\ (  `'-'
    '---''(_/--'  `-'\_)