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- ) )-,_. ,\ ( `'-'
'---''(_/--' `-'\_)