Wróć do: Teoria
podstawowy teoria programowaniakod maszynowymatura podstawowa z informatyki

Kod źródłowy, pośredni i maszynowy

Trzy postacie programu – od tekstu pisanego przez człowieka, przez kod pośredni, po instrukcje wykonywane przez procesor.

01

Opis

Ten sam program może istnieć w kilku postaciach, coraz bardziej oddalonych od człowieka, a coraz bliższych procesorowi.

Kod źródłowy to tekst napisany przez programistę w języku wysokiego poziomu. Jest czytelny, można go poprawiać i to on podlega ochronie jako utwór. Dostęp do niego decyduje o tym, czy program jest otwarty.

Kod maszynowy to ciąg liczb binarnych, które procesor wykonuje bezpośrednio. Jest nieczytelny dla człowieka i związany z konkretną architekturą procesora. Blisko niego stoi asembler – zapis tych samych instrukcji przy pomocy skrótów słownych, czytelny na tyle, by dało się w nim pracować.

Kod pośredni leży pomiędzy. Nie jest już tekstem źródłowym, ale też nie jest instrukcjami konkretnego procesora – to uniwersalna forma wykonywana przez maszynę wirtualną. Dzięki temu jeden skompilowany plik działa na różnych systemach. Tak działa Java.

02

Tabela

Postacie programu od człowieka do procesora
PostaćCzytelna dla człowiekaWykonuje ją
Kod źródłowytaknikt bezpośrednio
Kod pośredniniemaszyna wirtualna
Asemblerczęściowoprocesor po tłumaczeniu
Kod maszynowynieprocesor bezpośrednio

Na maturze

Najczęściej pytana jest kolejność przekształceń oraz to, która postać jest wykonywana przez procesor. Odpowiedź: wyłącznie kod maszynowy.

Drugi typ pytania dotyczy kodu pośredniego i przenośności. Warto umieć wyjaśnić, że dzięki maszynie wirtualnej ten sam plik działa na różnych systemach, kosztem niewielkiego spadku wydajności.

04

Zapamiętaj

  • Kod źródłowy pisze człowiek; procesor go nie rozumie.
  • Kod maszynowy to liczby binarne wykonywane bezpośrednio przez procesor.
  • Kod pośredni wykonuje maszyna wirtualna – stąd przenośność Javy.
  • Asembler to czytelny zapis instrukcji maszynowych, blisko sprzętu.
05

Najczęściej zadawane pytania

Dlaczego kod maszynowy jest zależny od procesora?

Bo każda architektura ma własny zestaw rozkazów. Instrukcje zapisane dla jednej rodziny procesorów nie mają sensu dla innej.

Czy da się odzyskać kod źródłowy z pliku wykonywalnego?

Dekompilacja pozwala odtworzyć coś zbliżonego, ale bez nazw zmiennych i komentarzy. Efekt bywa trudny do zrozumienia i nie jest oryginałem.

Po co komu asembler?

Do zadań wymagających pełnej kontroli nad sprzętem i maksymalnej wydajności – sterowników i systemów wbudowanych. W typowym programowaniu jest zbędny.

Powiązane zagadnienia