2009-05-12 7 views

Odpowiedz

6

Kluczową koncepcją LLVM jest niskopoziomowa "pośrednia" reprezentacja (IR) programu. To IR jest na poziomie zbliżonym do kodu asemblera, ale zawiera więcej informacji w celu ułatwienia optymalizacji.

Siła LLVM wynika z możliwości odroczenia kompilacji tej reprezentacji pośredniej do określonej maszyny docelowej, tuż przed rozpoczęciem kodu. Podejście kompilacyjne typu "just-in-time" (JIT) może być używane w aplikacji do tworzenia kodu, którego potrzebuje, zanim będzie on potrzebny.

W wielu przypadkach masz więcej informacji w czasie, gdy program jest uruchomiony, co robisz z powrotem w siedzibie głównej, dzięki czemu program może być zoptymalizowany.

Aby rozpocząć, można skompilować program w języku C++ do pojedynczej reprezentacji pośredniej, a następnie skompilować go do wielu platform z tej podczerwieni.

Możesz także wypróbować demo Kalejdoskop, które poprowadzi Cię przez tworzenie nowego języka bez konieczności pisania kompilatora, po prostu wpisz IR.

W aplikacjach o krytycznym działaniu aplikacja może napisać własny kod, który musi zostać uruchomiony, tuż przed uruchomieniem.

+1

Można również przygotować pliki binarne, jak również, że nie są zmuszeni do korzystania z metody wykonawcze JIT. Do tej pory ma on garstkę backendów, dopiero teraz zacząłem go używać i do tej pory jest on łatwy w użyciu jako kompilator cross ARM. Łatwo jest połączyć poszczególne moduły i zoptymalizować program jako całość. –

1

LLVM jest, jak sama nazwa wskazuje, maszyną wirtualną niskiego poziomu, która ma generator kodu. Jeśli chcesz się do niego skompilować, możesz użyć przedniego końca gcc lub clang, który jest kompilatorem c/C++ dla LLVM, który wciąż jest w toku.

2

Dlaczego nie pójdziesz do strony internetowej LLVM i sprawdź całą dokumentację tam. Wyjaśniają szczegółowo, czym jest LLVM i jak z niego korzystać. Na przykład mają stronę Getting Started.

1

Należy zauważyć, że garść informacji o celu pochodzi z plików nagłówkowych systemu używanych podczas kompilacji. LLVM nie odkłada rozwiązywania takich problemów, jak "rozmiar wskaźnika" czy "układ bajtów", więc jeśli kompilujesz z 64-bitowymi nagłówkami dla platformy Little-Endian, nie możesz użyć tego kodu źródłowego LLVM do kierowania na 32-bitowy zestaw big-endian pater wyjściowy.

Powiązane problemy