C# não compila diretamente para código de máquina. Ele compila para IL (Intermediate Language) — um bytecode independente de plataforma — que o CLR executa, usando compilação JIT (Just-In-Time) para traduzir IL para código de máquina nativo em tempo de execução. AOT (Ahead-Of-Time) é uma alternativa que compila para código nativo no tempo de compilação.
O pipeline de execução
C# source (.cs)
│ C# compiler (roslyn)
▼
IL bytecode (in a .dll/.exe assembly) ← platform-INDEPENDENT intermediate code
│ CLR loads it; JIT compiles IL → native code AT RUNTIME (per method, as called)
▼
Native machine code → executes on the CPU
