I detta dokument presenteras Vellvm (verifierad LLVM), ett ramverk för resonemang om program som uttrycks i LLVM:s mellanliggande representation och omvandlingar som fungerar på den. Vellvm tillhandahåller en mekaniserad formell semantik av LLVM:s mellanrepresentation, dess typsystem och egenskaper hos dess SSA-form. Ramverket är byggt med hjälp av Coq interaktiva teorem bevis. Den innehåller flera operativa semantik och bevisar relationer mellan dem för att underlätta olika resonemang stilar och bevistekniker. För att validera Vellvms design tar vi fram en tolk från Coqs formella semantik som kan köra program från LLVM:s testsvit och därmed jämföras med LLVM:s referensimplementationer. För att visa Vellvms praktiskhet formaliserar och verifierar vi en tidigare föreslagen transformation som härdar C-program mot säkerhetsöverträdelser i rumsligt minne. Vellvms verktyg gör det möjligt för oss att extrahera ett nytt, verifierat genomförande av omvandlingspasset som kopplar in i den verkliga LLVM-infrastrukturen; dess prestanda är konkurrenskraftig med det icke-verifierade ad-hoc-originalet.
Liknar CompCert formaliserar Vellvm REF-projektet LLVM:s mellanliggande representation och utvecklar en ram för resonemang om program.
Formalizing the LLVM intermediate representation for verified program transformations
{'venue': "POPL '12", 'journal': None, 'mag_field_of_study': ['Computer Science']}