IL2CPP Interna: Unity zeigt den generierten C++-Code

Unity veröffentlichte am 13. Mai 2015 einen technischen Blick auf den von IL2CPP erzeugten C++-Code. Der Beitrag untersucht die Ausgabe von il2cpp.exe anhand eines kleinen Unity-5.0.1p1-Projekts für WebGL und beschreibt, wie verwaltete Typen in nativen Code übertragen werden.

IL2CPP besteht aus einem Ahead-of-Time-Compiler und der Laufzeitbibliothek libil2cpp. Der Compiler verarbeitet Intermediate Language aus .NET- und Mono-Assemblies und erzeugt C++-Quellcode. Die Plattform übersetzt diesen Code anschließend mit ihrem jeweiligen C++-Compiler. Dadurch kann Unity Projekte auf Zielsysteme bringen, auf denen eine Just-in-Time-Ausführung nicht vorgesehen ist.

Generierter Code und Laufzeitprüfungen

Im Beispielprojekt erzeugte il2cpp.exe 4.625 Header-Dateien und 89 C++-Quelldateien. Ein Teil davon stammt aus den Standardbibliotheken wie mscorlib.dll. Unity wandelt diese Bibliotheken bei jedem Lauf erneut um, weil das Bytecode-Stripping je nach Script verändern kann, welche Teile tatsächlich in der Anwendung landen.

Die generierten Methoden erhalten zusätzliche Parameter für das Objekt und die Method-Metadaten. Namen enden bei Typen auf _t und bei Methoden auf _m. Für Nullwerte, Array-Grenzen und inkompatible Elementtypen fügt IL2CPP Prüfungen ein, die den Zusicherungen der .NET-Laufzeit entsprechen. Unity verweist zugleich darauf, dass sich die konkrete Ausgabe in späteren Versionen ändern kann.

Der Beitrag ist der zweite Teil der IL2CPP-Interna-Serie. Der zuvor veröffentlichte Auftakt erklärte bereits den Compiler, die Laufzeitbibliothek und den grundsätzlichen Übersetzungsweg.

Weitere News

Weitere News

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein