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

    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.C# (C Sharp, dosłownie "C-krzyżyk", "cis") – obiektowy język programowania zaprojektowany przez zespół pod kierunkiem Andersa Hejlsberga dla firmy Microsoft.
    Dalvik – maszyna wirtualna systemu operacyjnego Android. Została zaprojektowana w taki sposób, aby było możliwe jej wydajne działanie na platformach wyposażonych w wolniejsze procesory oraz małą pamięć - na przykład urządzenia mobilne. Nie jest maszyną wirtualną Javy i używa własnego kodu bajtowego, jednak możliwa jest konwersja kodu bajtowego Javy do kodu Dalvika.

    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.

    Maszyna stosowa to maszyna (procesor bądź maszyna wirtualna), w której podstawowe operacje prowadzi się na stosie, nie zaś na rejestrach.Kod bajtowy Perla używany w Perlu 5 jest maszyną stosową z operacjami umiarkowanie wysokiego poziomu. Perl 6 używać będzie maszyny wirtualnej Parrot.

    W przeciwieństwie do maszyn fizycznych, które prawie zawsze są maszynami rejestrowymi, większość (choć nie wszystkie) maszyn wirtualnych to maszyny stosowe.

    Języki i środowiska wykorzystujące kod pośredni[]

    Do najbardziej znanych języków programowania wykorzystujących kod pośredni zaliczyć można:

    Definicja intuicyjna: Kod źródłowy to zapis programu komputerowego w formie czytelnej dla człowieka umożliwiający jego modyfikację i rozwój.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.
  • Java (Kod bajtowy Javy),
  • Perl (Kod bajtowy Perla),
  • Python,
  • C#,
  • OBA w środowisku .NET
  • oraz urządzenia z system Android, które wykorzystują maszynę wirtualną Dalvik

    Przykład[]

    Perl[]

    Przykład kodu bajtowego Perla, źródło:

    sub hello
    {
        print "Hello, ", $_[0], "\n"
    }
    $x = "world!";
    hello($x)
    

    generuje kod pośredniczący funkcji głównej:

    OP     (0x815e2b0) enter
    COP    (0x8168838) nextstate
    SVOP   (0x81c9e20) const [5] PV (0x8165508) "world!"
    PADOP  (0x8168950) gvsv  GV (0x814ccd4) *x
    BINOP  (0x8168810) sassign
    COP    (0x81688b8) nextstate
    OP     (0x815e270) pushmark
    PADOP  (0x81697f8) gvsv  GV (0x814ccd4) *x
    PADOP  (0x8168d80) gv  GV (0x814cce0) *hello
    UNOP   (0x815e290) entersub [4]
    LISTOP (0x8150990) leave [1]
    

    oraz procedury hello:

    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.Procesor (ang. processor), także CPU (ang. Central Processing Unit) – urządzenie cyfrowe sekwencyjne, które pobiera dane z pamięci, interpretuje je i wykonuje jako rozkazy. Wykonuje on ciąg prostych operacji (rozkazów) wybranych ze zbioru operacji podstawowych określonych zazwyczaj przez producenta procesora jako lista rozkazów procesora.
    COP    (0x8150958) nextstate
    OP     (0x81508a8) pushmark
    SVOP   (0x8150998) const [3] PV (0x81654f8) "Hello, "
    PADOP  (0x8168a00) aelemfast  GV (0x814cbc0) *_
    SVOP   (0x8150900) const [4] PV (0x816551c) "\n"
    LISTOP (0x8168a58) print
    UNOP   (0x81687b0) leavesub [1]
    

    Java[]

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

    Android – system operacyjny dla urządzeń mobilnych takich jak telefony komórkowe, smartfony, tablety, tablety PC i netbooki. Obecnie (2013) najpopularniejszy system mobilny na świecie. Android został oparty na jądrze Linux oraz oprogramowaniu na licencji GNU. Początkowo był rozwijany przez firmę Android Inc. (kupioną później przez Google), następnie przeszedł pod skrzydła Open Handset Alliance.Tekstowy typ danych (ang. String) – typ danych służący do przechowywania ciągu znaków (zmiennych łańcuchowych).
    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
    
    Python – język programowania wysokiego poziomu ogólnego przeznaczenia i rozbudowanym pakiecie bibliotek standardowych, którego ideą przewodnią jest czytelność i klarowność kodu źródłowego. Jego składnia cechuje się przejrzystością i zwięzłością.Kompilator – program służący do automatycznego tłumaczenia kodu napisanego w jednym języku (języku źródłowym) na równoważny kod w innym języku (języku wynikowym) . Proces ten nazywany jest kompilacją. W informatyce kompilatorem nazywa się najczęściej program do tłumaczenia kodu źródłowego w języku programowania na język maszynowy. Niektóre z nich tłumaczą najpierw do języka asemblera, a ten na język maszynowy jest tłumaczony przez asembler.



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

    Warto wiedzieć że... beta

    .NET Framework, w skrócie .NET (wym. dot net) – platforma programistyczna opracowana przez Microsoft, obejmująca środowisko uruchomieniowe (Common Language Runtime – CLR) oraz biblioteki klas dostarczające standardowej funkcjonalności dla aplikacji. Technologia ta nie jest związana z żadnym konkretnym językiem programowania, a programy mogą być pisane w jednym z wielu języków – na przykład C++/CLI, C#, F#, J#, Delphi 8 dla .NET, Visual Basic .NET. Zadaniem platformy .NET Framework jest zarządzanie różnymi elementami systemu: kodem aplikacji, pamięcią i zabezpieczeniami. W środowisku tym można tworzyć oprogramowanie działające po stronie serwera internetowego (IIS) oraz pracujące na systemach, na które istnieje działająca implementacja tej platformy. Z racji jej pochodzenia najpełniej obsługiwane są systemy z rodziny Microsoft Windows, jednak ponieważ zasadnicza część platformy została zgłoszona jako standard ECMA, powstają także jego niezależne wdrożenia, np. Mono i dotGNU.
    Kod bajtowy Javy – lista instrukcji do wykonania przez wirtualną maszynę Javy (JVM). Każdy kod operacji kodu bajtowego ma jeden bajt długości, chociaż niektóre kody operacji wymagają parametrów, co sprawia, że mamy dużo wielobajtowych instrukcji. Nigdy nie użyto wszystkich możliwych 256 kodów operacyjnych.
    Obiekt to podstawowe pojęcie wchodzące w skład paradygmatu programowania obiektowego w analizie i projektowaniu oprogramowania oraz w programowaniu.
    Definicja intuicyjna: Java (wym. „dżawa”) to język programowania. Programy napisane w Javie można uruchamiać na wielu urządzeniach, takich jak telefony komórkowe lub komputery oraz pod różnymi systemami operacyjnymi, przy użyciu Wirtualnej maszyny Javy, która musi być w danym środowisku zainstalowana.
    Maszyna rejestrowa – maszyna (procesor bądź maszyna wirtualna), w której podstawowe operacje prowadzi się na niewielkiej grupie rejestrów, nie zaś na stosie.
    Bajt (dop. bajtu lub bajta) – najmniejsza adresowalna jednostka informacji pamięci komputerowej, składająca się z bitów.

    Reklama

    Czas generowania strony: 0.03 sek.