there is no call stack. you are at the top of the stack. here is the generated IL code:
.method private hidebysig static void '<Main>$'(string[] args) cil managed
{
.entrypoint
// Code size 12 (0xc)
.maxstack 8
IL_0000: ldstr "Hello, World!"
IL_0005: call void [System.Console]System.Console::WriteLine(string)
IL_000a: nop
IL_000b: ret
} // end of method Program::'<Main>$'
notice the .entrypoint that defines this as the code to call at startup.
the program compiled to a .net dll. the generated hosting program (<name>.exe) is a C/C++ program that loads the dll, and calls the program code passing args. see:
https://github.com/dotnet/runtime/blob/main/docs/design/features/native-hosting.md
note: for min api, the C# compiler generates the main(string[] args) wrapper