Język maszynowy
Z Wikipedii
Język maszynowy (kod maszynowy) - język programowania, w którym zapis programu wymaga instrukcji bezpośrednio jako liczb, które są rozkazami i danymi bezpośrednio pobieranymi przez procesor wykonujący ten program.
Był jedynym językiem 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 asemblera). Utworzony kod maszynowy zapisywany jest w pliku, o odpowiednim formacie, dzięki czemu można go poddać linkowaniu, które wygeneruje ostatecznie obraz programu w taki sposób, że system operacyjny będzie mógł wykonać dany program.
Dawniej programowanie komputerów odbywało się właśnie poprzez "ręczne" umieszczanie w pamięci odpowiednich rozkazów, a następnie zmuszenie procesora do wykonania tychże rozkazów.
Ponieważ każdy typ procesora ma swój własny język maszynowy, jest to najmniej przenośny język programowania.
Kod maszynowy to postać programu komputerowego (zwana postacią wykonywalną lub binarną) przeznaczona do bezpośredniego lub prawie bezpośredniego wykonania przez procesor, przeznaczona na konkretny typ procesora (i zgodne z nim) wyrażona w postaci kodów rozkazów procesora i ich argumentów, praktycznie nieczytelna dla człowieka.
W systemach z rodziny DOS/Windows w kodzie maszynowym zapisane są programy w plikach typu "com". Pliki typu "exe" zawierają też dodatkowe informacje, np. adresy skoków między modułami, które są ustawiane w momencie wczytywania programu do pamięci komputera (wersja 16-bitowa) oraz informacje potrzebne do łączenia programu z bibliotekami dzielonymi (DLL).
Kod maszynowy nie może być wykonywany przez procesory innego typu. Niesie to za sobą wiele problemów związanych z przenośnością programów. Aby ich uniknąć rozpowszechnia się programy w kodzie źródłowym (np. oprogramowanie FLOSS, niezależnie od języka) lub w kodzie pośrednim (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. Właściwość ta może być zaletą umożliwiającą użycie tego samego programu źródłowego do budowy programu pracujacego na różnych systemach operacyjnych, różnych procesorach itp. Niepoprawnie napisany kod źródłowy może nie być przetłumaczalny na niektóre postacie kodu maszynowego.
Kod źródłowy w asemblerze jest silnie związany z procesorem i zazwyczaj nie można go przenieść na inny procesor.
Kod maszynowy jest (współcześnie) generowany za pomocą translatora, który przekształca czytelny dla programisty kod w języku programowania w kody instrukcji maszynowych.