LLVM - Low Level Virtual Machine LLVM è un insieme di tecnologie per compilatori che possono essere utilizzate per sviluppare un frontend per qualsiasi linguaggio di programmazione e un backend per qualsiasi architettura hardware. LLVM è progettato per usare una rappresentazione intermedia (IR) indipendente dal linguaggio che funge da assembly portabile di alto livello, e può essere ottimizzata con una serie di trasformazioni.
LLVM è scritto in C++ ed è progettato per l'ottimizzazione a compile-time, link-time, run-time e “idle-time”. E' stato progettato in modo da essere indipendente dai linguaggi e ha dato vita a un'ampia varietà di frontend, ad esempio: ActionScript, Ada, C# per .NET, Common Lisp, CUDA, D, Delphi, Forth, Fortran, FreeBASIC, Free Pascal, Halide, Haskell, Java bytecode, Julia, Kotlin, il linguaggio G di LabVIEW, Lua, Objective-C, OpenCL, PostgreSQL SQL e PLpgSQL, Ruby, Rust, Scala, Swift, Xojo e Zig.
E' il segreto che fa funzionare RPCS3 così velocemente. All'inizio dell'emulazione LLVM ricompila tutto il codice delle PPU originali del processore di PS3 in codice nativo, successivamente, quindi, riesce ad eseguire tutte le elaborazioni che fanno uso intensivo dell'architettura PPU direttamente su una architettura X86 (o altra ancora).
★ compiler explorer
reddit
LLVM tutorial
LLVM Programmer’s Manual
LLVM Language Reference Manual
[via]