• Artykuły
  • Forum
  • Ciekawostki
  • Encyklopedia
  • Kod bajtowy Javy



    Podstrony: [1] 2 [3] [4] [5]
    Przeczytaj także...
    Perl – interpretowany język programowania autorstwa Larry’ego Walla początkowo przeznaczony głównie do pracy z danymi tekstowymi, obecnie używany do wielu innych zastosowań. Wzorowany na takich językach jak C, skryptowe: sed, awk i sh oraz na wielu innych.Adobe ColdFusion – pierwsza i najczęściej spotykana implementacja języka programowania ColdFusion Markup Language (CFML), który jest używany w tworzeniu dynamicznie generowanych stron internetowych. Początkowo był to produkt firmy Allaire, w 2001 roku firma ta została zakupiona przez firmę Macromedia, która została w 2005 roku włączona do korporacji Adobe Systems. ColdFusion bazuje na specyfikacji języka ECMAScript, ale nie jest z nią w pełni zgodny.
    Model obliczeń[ | edytuj kod]

    Dla przykładu, kod asemblera dla procesora x86 mógłby wyglądać tak:

     add eax, edx
     mov ecx, eax
    

    Ten kod dodaje dwie liczby do siebie, a następnie przenosi je w inne miejsce. Robiący to samo kod bajtowy Javy wyglądałby następująco:

    0 iload_1
    1 iload_2
    2 iadd
    3 istore_3
    

    W tym kodzie, dwie wartości które zostaną do siebie dodane umieszczane są na stosie, gdzie są pobierane przez instrukcję która je dodaje i wynik umieszcza na stosie. Instrukcja przechowywania następnie przenosi je do najwyższej wartości na obszarze stosu w lokacji zmiennej. Liczby przed instrukcjami to po prostu przesunięcie każdej instrukcji od początku metody. Metoda nazwana np. „pobierzNazwe()” mogłaby wyglądać tak:

    Przyrostek (sufiks) – w językoznawstwie jest to każdy fragment wyrazu (jego morfem), o ile jest dodany po jego rdzeniu (czyli podstawie słowotwórczej) i jednocześnie ma własności słowotwórcze (czyli nie jest końcówką fleksyjną, przy czym rozróżnienie na "sufiks" jako element słowotwórczy i "końcówkę" jako wykładnik fleksyjny typowe jest wyłącznie dla polonistyki i slawistyki, a nie jest stosowane w innych filologiach, stąd na przykład w angielskiej i niemieckiej wersji tego artykułu "sufiks" jest egzemplifikowany w pierwszym rzędzie jako wykładnik deklinacyjny). Danemu wyrazowi może towarzyszyć jeden sufiks, kilka lub żaden.Kod bajtowy (ang. bytecode) – nazwa reprezentacji kodu używanej przez maszyny wirtualne oraz przez niektóre kompilatory. Kod składa się z ciągu instrukcji (których kody operacji mają zwykle długość jednego bajta, stąd nazwa), które nie odpowiadają bezpośrednio instrukcjom procesora i mogą zawierać instrukcje wysokiego poziomu (takie jak np. stwórz obiekt klasy X, połącz dwa łańcuchy itd.), jednak w przeciwieństwie do kodu źródłowego wymagają analizy tylko pojedynczych poszczególnych operacji.
    Method java.lang.String pobierzNazwe()
    0 aload_0       // Obiekt „this” jest zapisywany w lokacji 0 tabeli zmiennych
    1 getfield #5 <Field java.lang.String nazwa>
                    // Instrukcja ta pobiera obiekt z wierzchu stosu, zwraca wybrane
                    // pole z niego i umieszcza je na stosie.
                    // W tym przykładzie, pole o nazwie „nazwa” jest piątym polem klasy
    4 areturn       // Zwraca obiekt na szczycie stosu z metody.
    

    Przykład[ | edytuj kod]

    Przykład kodu w Javie, źródło:

    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ę.Programowanie proceduralne to paradygmat programowania zalecający dzielenie kodu na procedury, czyli fragmenty wykonujące ściśle określone operacje.
      outer:
      for (int i = 2; i < 1000; i++) {
          for (int j = 2; j < i; j++) {
              if (i % j == 0)
                  continue outer;
          }
          System.out.println (i);
      }
    

    Kompilator Javy generuje następujący kod bajtowy:

      0:   iconst_2
      1:   istore_1
      2:   iload_1
      3:   sipush  1000
      6:   if_icmpge       44
      9:   iconst_2
      10:  istore_2
      11:  iload_2
      12:  iload_1
      13:  if_icmpge       31
      16:  iload_1
      17:  iload_2
      18:  irem
      19:  ifne    25
      22:  goto    38
      25:  iinc    2, 1
      28:  goto    11
      31:  getstatic       #84; //Field java/lang/System.out:Ljava/io/PrintStream;
      34:  iload_1
      35:  invokevirtual   #85; //Method java/io/PrintStream.println:(I)V
      38:  iinc    1, 1
      41:  goto    2
      44:  return
    

    Generowanie kodu[ | edytuj kod]

    Najczęściej spotykanym językiem tworzący kod bajtowy Javy jest Java. Jest jeden oficjalny kompilator Javy, javac firmy Sun Microsystems, który kompiluje kod źródłowy Javy do kodu bajtowego Javy. Jednakże specyfikacja kodu bajtowego Javy jest ogólnodostępna, co sprawiło, że powstały kompilatory przystosowane do innych języków programowania.

    C# (C Sharp, dosłownie "C-krzyżyk", "cis") – obiektowy język programowania zaprojektowany przez zespół pod kierunkiem Andersa Hejlsberga dla firmy Microsoft.PHP – obiektowy język programowania zaprojektowany do generowania stron internetowych i budowania aplikacji webowych w czasie rzeczywistym.


    Podstrony: [1] 2 [3] [4] [5]



    w oparciu o Wikipedię (licencja GFDL, CC-BY-SA 3.0, autorzy, historia, edycja)

    Warto wiedzieć że... beta

    Stos (ang. Stack) – liniowa struktura danych, w której dane dokładane są na wierzch stosu i z wierzchołka stosu są pobierane (bufor typu LIFO, Last In, First Out; ostatni na wejściu, pierwszy na wyjściu). Ideę stosu danych można zilustrować jako stos położonych jedna na drugiej książek – nowy egzemplarz kładzie się na wierzch stosu i z wierzchu stosu zdejmuje się kolejne egzemplarze. Elementy stosu poniżej wierzchołka można wyłącznie obejrzeć, aby je ściągnąć, trzeba najpierw po kolei ściągnąć to, co jest nad nimi.
    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.
    Przedrostek, prefiks – w językoznawstwie jest to fragment wyrazu (tzw. morfem) dodawany po lewej stronie do słowa podstawowego lub jego rdzenia (czyli do podstawy słowotwórczej), służący tworzeniu wyrazów pochodnych. Wyraz może nie posiadać żadnego prefiksu, może posiadać jeden lub więcej prefiksów.
    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").
    NetLogo to język programowania i zintegrowane środowisko modelowania matematycznego. Język NetLogo został zaprojektowany na bazie języka Logo. Jego twórcy kierowali się zasadą niski próg i brak sufitu: język ma umożliwić łatwą pracę nowicjuszom a jednocześnie sprostać potrzebom zaawansowanych użytkowników. Ma wbudowaną obszerną bibliotekę modeli z różnych dziedzin, takich jak ekonomia, biologia, fizyka, chemia, psychologia i wiele innych. NetLogo jest wykorzystywane także w celach edukacyjnych.
    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.
    Kod operacji (ang. opcode) – w informatyce jest to liczba, będąca fragmentem rozkazu przekazywanego do wykonania do procesora, która informuje jaka operacja ma być wykonana. Każde polecenie assemblera jak add, sub, itd. posiada swój numer, na który jest zamieniane podczas kompilacji do kodu maszynowego. Zbiór kodów dla danego procesora jest określany w jego modelu programowym.

    Reklama

    Czas generowania strony: 0.018 sek.