La manera más fácil de averiguar es pegarse un punto de interrupción en main()
y echar un vistazo:
![call stack](https://i.stack.imgur.com/vDJAu.png)
Así que, técnicamente, la respuesta a la pregunta es que se llama main()
de algo llamado start
. No obtiene el código fuente start
, pero puede mirar el código de ensamblado en el depurador si lo desea. Esta versión es de código incorporado para el simulador:
0x1c30: pushl $0
0x1c32: movl %esp, %ebp
0x1c34: andl $-16, %esp
0x1c37: subl $16, %esp
0x1c3a: movl 4(%ebp), %ebx
0x1c3d: movl %ebx, (%esp)
0x1c40: leal 8(%ebp), %ecx
0x1c43: movl %ecx, 4(%esp)
0x1c47: addl $1, %ebx
0x1c4a: shll $2, %ebx
0x1c4d: addl %ecx, %ebx
0x1c4f: movl %ebx, 8(%esp)
0x1c53: movl (%ebx), %eax
0x1c55: addl $4, %ebx
0x1c58: testl %eax, %eax
0x1c5a: jne 0x00001c53 ; start + 35
0x1c5c: movl %ebx, 12(%esp)
0x1c60: calll 0x00001c70 ; main at main.m:9
0x1c65: movl %eax, (%esp)
0x1c68: calll 0x00002376 ; exit
0x1c6d: hlt
0x1c6e: nop
0x1c6f: nop
Si crea un programa de línea de comandos MacOS X y poner un punto de interrupción en main()
, usted encontrará que es llamado por main()
start
en el escritorio, también. El ensamblaje para la versión Mac de start
no es exactamente igual, pero está muy cerca. Entonces, es una buena suposición que el compilador genere start
en base a la plataforma de destino, y que start
es el punto de entrada que busca el sistema operativo cuando está lanzando un programa.
Muchas gracias –