Cómo escribir un programa en C válido sin main()
Writing a (valid) C program without main()

Recorre el pipeline de compilación de C: preprocesador, compilador, ensamblador y enlazador. Empieza con un hello world, inspecciona macros y ensamblador generado, y termina produciendo un binario ejecutable sin función main(). Descubre que el punto de entrada real es _start, y que puedes omitir el runtime de C usando syscalls directamente.
main() es una conveniencia, no un requisito. El punto de entrada real es _start, y el runtime estándar de C es el código que llama a main().