Język maszynowy

Z Wikipedii, wolnej encyklopedii
Skocz do: nawigacja, szukaj
Przykład kodu maszynowego (kolumna druga) uwidocznionego za pomocą monitora kodu maszynowego

Język maszynowy, kod maszynowyzestaw rozkazów procesora, w którym zapis programu wyrażony jest w postaci liczb binarnych stanowiących rozkazy oraz ich argumenty.

Był to jedyny język programowania komputerów zerowej generacji z wyjątkiem komputera Z4, a powszechnym w początkowym okresie rozwoju komputerów pierwszej generacji.

Kod maszynowy może być generowany w procesie kompilacji (w przypadku języków wysokiego poziomu) lub asemblacji (w przypadku języków niskiego poziomu). W trakcie procesu tworzenia kodu maszynowego tworzony jest często kod pośredni zapisywany w pliku obiektowym. Następnie kod pośredni pobrany z pliku obiektowego poddawany jest konsolidacji (linkowaniu) w celu utworzenia ostatecznego kodu maszynowego.

Język maszynowy jest nieprzenośny, ponieważ każda architektura procesora ma swój własny język maszynowy.

Kod maszynowy[edytuj | edytuj kod]

Kod maszynowy to postać programu komputerowego (zwana postacią wykonywalną lub binarną) przeznaczona do bezpośredniego lub prawie bezpośredniego wykonania przez procesor. Jest ona dopasowana do konkretnego typu procesora i wyrażona w postaci rozumianych przez niego kodów rozkazów i ich argumentów. Jest to postać trudna do analizy przez człowieka.

W systemach z rodziny DOS/Windows w kodzie maszynowym zapisane są programy umieszczone w plikach typu com. Pliki typu exe zawierają ponadto dodatkowe informacje, np. adresy skoków, które są ustawiane w momencie wczytywania programu do pamięci komputera (wersja 16-bitowa), a także informacje potrzebne do łączenia programu z bibliotekami dynamicznymi (DLL).

Kod maszynowy nie może być wykonywany przez procesory innego typu, niż ten, dla którego zostały napisane. Niesie to za sobą wiele problemów związanych z przenośnością programów. Aby ich uniknąć rozpowszechnia się programy w formie kodu źródłowego (np. oprogramowanie FLOSS) lub w formie kodu pośredniego (np. Java, .NET).

Postać i treść kodu maszynowego zależy nie tylko od kodu źródłowego programu, ale też od translatora, systemu operacyjnego, wersji bibliotek, typu procesora i jego języka maszynowego. Języki wysokiego poziomu wraz z odpowiednimi bibliotekami i kompilatorami umożliwiającą użycie tego samego programu źródłowego do budowy programu pracującego na różnych systemach operacyjnych, różnych procesorach, itd. Niepoprawnie napisany kod źródłowy może powodować problemy podczas procesu tłumaczenia go na niektóre postacie kodu maszynowego.

Kod źródłowy w asemblerze jest silnie związany z konkretną architekturą procesora i zazwyczaj nie można go uruchomić na innej bez wprowadzania zmian.

Kod maszynowy jest generowany za pomocą translatora, który przekształca czytelny dla programisty zapis w języku programowania w odpowiadające mu kody instrukcji maszynowych.