Język maszynowy (kod maszynowy) – język programowania, w którym zapis programu wymaga instrukcji bezpośrednio jako liczb, które są rozkazami oraz danymi bezpośrednio pobieranymi przez procesor wykonujący ten program.
Był to wyłączny 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 bywa generowany w procesie kompilacji (w przypadku języków wysokiego poziomu) albo asemblacji (w przypadku asemblera). W trakcie procesu tworzenia kodu maszynowego tworzony jest wielokrotnie kod pośredni, który bywa zapisywany w pliku o odpowiednim formacie. Kod pośredni poddawany jest linkowaniu, które wygeneruje ostateczny obraz programu w taki sposób, że system operacyjny będzie mógł go wczytać, z ewentualnym dostosowaniem argumentów będących adresami do adresów odpowiednich bloków programu w pamięci, oraz wykonać zawarte w nim instrukcje.
Gdyż każdy typ procesora ma swój własny język maszynowy, jest to najmniej przenośny język programowania.
Kod maszynowy
Kod maszynowy to osoba programu komputerowego (zwana postacią wykonywalną albo binarną) przeznaczona do bezpośredniego albo prawie bezpośredniego wykonania przez procesor. Jest ona dopasowana do konkretnego typu procesora oraz wyrażona w postaci rozumianych przez niego kodów rozkazów oraz ich argumentów. Jest to osoba trudna do analizy przez człowieka.
W systemach z rodziny DOS/Windows w kodzie maszynowym zapisane są programy zawarte 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 bywa 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) albo w formie kodu pośredniego (np. Java, .NET).
Osoba oraz treść kodu maszynowego zależy nie tylko od kodu źródłowego programu, ale też od translatora, systemu operacyjnego, wersji bibliotek, typu procesora oraz jego języka maszynowego. Języki wysokiego poziomu wraz z odpowiednimi bibliotekami oraz kompilatorami umożliwiającą użycie tego samego programu źródłowego do budowy programu pracującego na wielorakich systemach operacyjnych, wielorakich procesorach, itd. Niepoprawnie napisany kod źródłowy może powodować problemy podczas procesu tłumaczenia go na pewne postacie kodu maszynowego.
Kod źródłowy w asemblerze jest silnie związany z konkretną architekturą procesora oraz zwykle nie da się 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.
Jubiler to ten jubiler. Sam