• Artykuły
  • Forum
  • Ciekawostki
  • Encyklopedia
  • LLVM



    Podstrony: 1 [2] [3]
    Przeczytaj także...
    Ada to strukturalny, kompilowany, imperatywny, statycznie typowany i obiektowy język programowania opracowany przez Jean Ichbiaha i zespół z CII Honeywell Bull w latach 70. XX wieku. Język ten wygrał konkurs zorganizowany przez Departament Obrony USA (U.S. Department of Defense – DoD), pokonując 19 innych projektów. Nazwa języka, nadana przez DoD, pochodzi od imienia lady Augusty Ady Lovelace, uważanej za pierwszą programistkę w historii.GNU lightning jest biblioteką open-source do generowania kodu maszynowego w trakcie działania programu. Cechuje się dużą wydajnością i przydatnością w złożonych problemach związanych z generacją kodu, dzięki czemu jest stosowana w kompilatorach JIT. W przeciwieństwie do LLVM czy libJIT, GNU lightning dostarcza wyłącznie niskopoziomowego interfejsu tłumaczącego na język maszynowy konkretnego sprzętu ustandaryzowany, uniwersalny kod asemblerowy RISC luźno bazujący na SPARC oraz architekturze MIPS. Biblioteka nie zajmuje się alokacją rejestrów, zarządzaniem przepływem sterowania, ani optymalizacją.

    LLVM (poprzednio Low Level Virtual Machine) – napisany w C++ kompilator. Pierwotnie był zaprojektowany dla języka C/C++, lecz dzięki jego ogólnej architekturze powstało wiele front-endów obejmujących m.in. języki Objective-C, Fortran, Ada, Haskell, D, Java, Scala, Python, Ruby czy ActionScript.

    Projekt powstał w 2000 roku na Uniwersytecie Illinois w Urbana-Champaign pod kierownictwem Vikrama Adve oraz Chrisa Lattnera. LLVM początkowo służył badaniom nad technikami dynamicznej kompilacji dla statycznych i dynamicznych języków programowania i został wydany na licencji BSD. W 2005 roku Apple Inc. zatrudniło Lattnera i powołało zespół programistów w celu wykorzystania LLVM w systemach tworzenia aplikacji tej firmy. LLVM jest integralną częścią najnowszych narzędzi programistycznych dla systemu OS X oraz iOS.

    W językach programowania system typów może być zdefiniowany jako system klasyfikacji wyrażeń w zależności od rodzajów wartości, jakie one generują. Każdej obliczonej wartości przypisywany jest pewien typ, który jednoznacznie definiuje, jakie operacje można na niej wykonać. Śledząc przepływ wartości, system typów stara się udowodnić, że w programie występuje poprawne typowanie, tzn. nie dochodzi do sytuacji, w której na wartości określonego typu próbujemy wykonać niedozwoloną operację.Podprogram (inaczej funkcja lub procedura) - termin związany z programowaniem proceduralnym. Podprogram to wydzielona część programu wykonująca jakieś operacje. Podprogramy stosuje się, aby uprościć program główny i zwiększyć czytelność kodu.

    Zasada działania[ | edytuj kod]

    Kluczową część systemu kompilacji LLVM stanowi warstwa pośrednia, która pobiera kod pośredni (IF – Intermediate form) z kompilatora dla określonego języka programowania i optymalizuje go. Może on zostać później przekonwertowany na kod asemblera dla konkretnej platformy sprzętowej, lub też pozostawiony do późniejszej kompilacji w locie w stylu języka Java. LLVM obsługuje kod pośredni kompilatora GCC, co umożliwia wykorzystanie szerokiej gamy już istniejących kompilatorów dla tamtego projektu.

    Tablica w informatyce to kontener danych dostępnych, w którym poszczególne komórki dostępne są za pomocą kluczy, które najczęściej przyjmują wartości numeryczne. Rozmiar tablicy jest albo ustalony z góry (tablice statyczne), albo może się zmieniać w trakcie wykonywania programu (tablice dynamiczne).Liczby całkowite – liczby naturalne dodatnie N + = { 1 , 2 , 3 , … } {displaystyle mathbb {N} _{+}={1,2,3,dots }} oraz liczby przeciwne do nich { − 1 , − 2 , − 3 , … } {displaystyle {-1,-2,-3,dots }} , a także liczba zero. Uogólnieniem liczb całkowitych są liczby wymierne i tym samym liczby rzeczywiste, szczególnym przypadkiem liczb całkowitych są: liczby naturalne.

    LLVM posiada niezależny od języka zestaw instrukcji oraz system typów. Każda instrukcja przedstawiona jest w postaci SSA (static single assignment form), co oznacza że do każdej zmiennej (zwana typowanym rejestrem) możemy przypisać wartość co najwyżej jeden raz. Upraszcza to analizę zależności między poszczególnymi zmiennymi. Wszelkie konwersje typów obsługiwane są jawnie przy pomocy instrukcji rzutowania. LLVM posiada podstawowe typy takie jak liczby całkowite określonych rozmiarów i dokładnie pięć typów pochodnych: wskaźniki, tablice, wektory, struktury i funkcje. Dowolny typ w danym języku programowania może być przedstawiony jako kombinacja typów podstawowych LLVM. Przykładowo, klasa C++ może być przedstawiona jako kombinacja struktur, funkcji i tablic wskaźników funkcji.

    Asembler (z ang. assembler) – termin informatyczny związany z programowaniem i tworzeniem kodu maszynowego dla procesorów. W języku polskim oznacza on program tworzący kod maszynowy na podstawie kodu źródłowego (tzw. asemblacja) wykonanego w niskopoziomowym języku programowania bazującym na podstawowych operacjach procesora zwanym językiem asemblera, popularnie nazywanym również asemblerem. W tym artykule język programowania nazywany będzie językiem asemblera, a program tłumaczący – asemblerem.Single Static Assignment to postać programu używana przez kompilatory w trakcie optymalizacji, w której każdej zmiennej wartość przypisuje się tylko raz.

    LLVM-owy kompilator JIT potrafi wykrywać i usuwać niepotrzebne rozgałęzienia programu w trakcie jego wykonywania. Dzięki temu przydaje się on podczas stosowania techniki Partial evaluation, gdy program posiada wiele możliwych ścieżek wykonania – w przypadku większości z nich można bardzo łatwo określić, które z nich są niepotrzebne w określonej sytuacji. Ta właściwość jest wykorzystywana w obsłudze potokowania OpenGL w Mac OS X Leopard (v. 10.5) do radzenia sobie z brakami sprzętowego wsparcia dla rozmaitych opcji. Kod do obsługi operacji graficznych OpenGL-a został pozostawiony w formie pośredniej i jest kompilowany w locie na maszynie docelowej. W systemach z potężnymi kartami graficznymi uzyskiwany kod maszynowy był niezwykle mały, przekazując wszystkie komendy do karty z minimalnymi narzutami. W pozostałych systemach LLVM kompilował dodatkowe funkcje, które emulowały brakujące opcje karty graficznej. LLVM odegrał także kluczową rolę w poprawianiu wydajności na niskobudżetowych maszynach wykorzystujących chipsety Intel GMA.

    Język D – wieloparadygmatowy język programowania umożliwiający programowanie obiektowe, imperatywne oraz metaprogramowanie. Został opracowany przez Waltera Brighta, twórcę pierwszego natywnego kompilatora C++, Zortech C++. D powstał jako obiektowy następca języka C, jednak w przeciwieństwie do C++ zachowuje ze swoim poprzednikiem jedynie binarną kompatybilność. D posiada wiele cech obecnych w C++, a jego składnia oraz możliwości są wzorowane na Javie, C# oraz Eiffel. Pierwsza stabilna wersja języka ukazała się 2 stycznia 2007 roku. 17 czerwca 2007 roku opublikowano po raz pierwszy eksperymentalną wersję 2.0.Uniwersytet Illinois w Urbana-Champaign (University of Illinois at Urbana-Champaign, UofI lub UIUC) – najlepszy i najbardziej wszechstronny uniwersytet w systemie publicznych uniwersytetów stanu Illinois.


    Podstrony: 1 [2] [3]




    Warto wiedzieć że... beta

    Scala − język programowania łączący cechy języków funkcyjnych i obiektowych. Scala działa na Wirtualnej Maszynie Javy, a także na Java Platform, Micro Edition Connected Limited Device Configuration i platformie .NET. Nazwa ma za zadanie podkreślać skalowalność języka, stąd Scala ("scalable language").
    Mac OS X 10.5 (nazwa kodowa Leopard) – system operacyjny firmy Apple Inc., którego premiera odbyła się 26 października 2007, jako następca systemu Mac OS X 10.4.
    OpenGL (ang. Open Graphics Library) – specyfikacja uniwersalnego API do generowania grafiki. Zestaw funkcji składa się z 250 podstawowych wywołań, umożliwiających budowanie złożonych trójwymiarowych scen z podstawowych figur geometrycznych.
    Ruby to interpretowany, w pełni obiektowy i dynamicznie typowany język programowania stworzony w 1995 roku przez Yukihiro Matsumoto (pseudonim Matz). W języku angielskim ruby oznacza rubin.
    Apple Inc. (wcześniej Apple Computer Inc.) NASDAQ: AAPL – amerykańska korporacja zajmująca się projektowaniem i produkcją elektroniki użytkowej, oprogramowania i komputerów osobistych z siedzibą w Cupertino w Kalifornii. Założona przez Steve’a Wozniaka – projektanta, Steve’a Jobsa i Ronalda Wayne’a. Produkty spółki to m.in.: komputery Mac, iPod, iPhone i iPad. Oprogramowanie Apple obejmuje system operacyjny OS X, przeglądarkę multimediów iTunes, pakiet oprogramowania multimedialnego i kreatywności iLife, pakiet oprogramowania biurowego iWork, profesjonalny pakiet fotografii Aperture, pakiet profesjonalnych rozwiązań wideo Final Cut Studio oraz zestaw narzędzi audio Logic Studio. Od stycznia 2010 roku firma działa poprzez 284 własnych sklepów detalicznych w dziesięciu krajach, oraz za pośrednictwem sklepu internetowego sprzedającego zarówno sprzęt, jak i oprogramowanie.
    W programowaniu obiektowym klasa jest częściową lub całkowitą definicją dla obiektów. Definicja obejmuje dopuszczalny stan obiektów oraz ich zachowania. Obiekt, który został stworzony na podstawie danej klasy nazywany jest jej instancją. Klasy mogą być typami języka programowania - przykładowo, instancja klasy Owoc będzie mieć typ Owoc. Klasy posiadają zarówno interfejs, jak i strukturę. Interfejs opisuje, jak komunikować się z jej instancjami za pośrednictwem metod, zaś struktura definiuje sposób mapowania stanu obiektu na elementarne atrybuty.
    Fortran (od wersji 90 do aktualnej) a dawniej FORTRAN (do wersji 77 włącznie) (od ang. FORmula TRANslator) – język programowania pierwotnie zaprojektowany do zapisu programów obliczeniowych, był niegdyś językiem proceduralnym, obecnie jest nadal rozwijanym językiem ogólnego przeznaczenia. Umożliwia programowanie strukturalne, obiektowe (Fortran 90/95), modularne i równoległe (Fortran 2008). Jego zastosowaniami są, między innymi, obliczenia naukowo-inżynierskie, numeryczne, symulacja komputerowa itp.

    Reklama

    Czas generowania strony: 0.026 sek.