Der einfache Weg ist, um herauszufinden, einen Haltepunkt in main()
zu bleiben und einen Blick:
die Antwort auf die Frage Technisch gesehen, ist, dass main()
von etwas start
genannt genannt wird. Sie erhalten den Quellcode für start
nicht, aber Sie können den Assemblycode im Debugger anzeigen, wenn Sie möchten. Diese Version ist von Code für den Simulator gebaut:
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
Wenn Sie ein MacOS X Kommandozeilen-Programm und setzen Sie einen Haltepunkt in main()
erstellen, werden Sie feststellen, dass main()
von start
auf dem Desktop aufgerufen wird, auch. Die Assembly für die Mac-Version von start
ist nicht genau das gleiche, aber es ist sehr nah. Es ist also eine gute Schätzung, dass start
für Sie von dem Compiler basierend auf der Zielplattform generiert wird und dass start
der Einstiegspunkt ist, nach dem das Betriebssystem sucht, wenn es ein Programm startet.
Vielen Dank –