Język maszynowy: Różnice pomiędzy wersjami

[wersja przejrzana][wersja przejrzana]
Usunięta treść Dodana treść
ort. zamieniłem Natępnie na Następnie
m lit., ort., drobne merytoryczne, styl.
Linia 1:
[[plik:Apple II Monitor.png|thumb|Przykład kodu maszynowego (kolumna druga) uwidocznionego za pomocą [[Monitor (program)|monitora kodu maszynowego]]|250x250px]]
'''Język maszynowy, kod maszynowy''' – [[Lista rozkazów procesora|zestaw rozkazów procesora]], w którym zapis [[Program komputerowy|programu]] wyrażony jest w postaci [[Dwójkowy system liczbowy|liczb binarnych]] stanowiących [[rozkaz (informatyka)|rozkazy]] oraz ich [[Argument (informatyka)|argumenty]].
 
Był to jedyny język programowania [[komputer zerowej generacji|komputerów zerowej generacji]] z wyjątkiem komputera [[Z4]], a powszechnympowszechny w początkowym okresie rozwoju [[komputer pierwszej generacji|komputerów pierwszej generacji]].
 
Kod maszynowy może być generowany w procesie [[Kompilator|kompilacji]] (w przypadku [[język wysokiego poziomu|języków wysokiego poziomu]]) lub [[Asembler|asemblacji]] (w przypadku [[Język niskiego poziomu|języków niskiego poziomu]]). W trakcie procesu tworzeniagenerowania kodu maszynowego często tworzony jest częstoprzenośny kod pośredni zapisywany w [[Plik obiektowy|pliku obiektowym]]. Następnie kod pośredniten pobrany z pliku obiektowego poddawany jest [[Konsolidacja (informatyka)|konsolidacji]] (linkowaniu) z kodem w innych plikach, w celu utworzenia ostatecznegoostatecznej postaci kodu maszynowego, który będzie zapisany w [[Plik wykonywalny|pliku wykonywalnym]].
 
Język maszynowy jest nieprzenośny, ponieważ każda [[architektura procesora]] ma swój własny język[[Model maszynowyprogramowy procesora|model programowy]], a więc m.in. [[Lista rozkazów procesora|listę rozkazów maszynowych]].
 
== Kod maszynowy ==
'''Kod maszynowy''' to postać [[oprogramowanie|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 bezpośredniej analizy przez człowieka, dlatego by ułatwić sobie zadanie, używa się [[Monitor (program)|monitorów kodu maszynowego]] lub [[Deasembler|deasemblerów]].
 
W systemach z rodziny [[DOS]]/[[Microsoft Windows|Windows]] w kodzie maszynowym zapisane są programy umieszczone w plikach typu ''com'' i ''exe''. Pliki ''com'' mogą mieć maksymalnie wielkość 64 kB, więc wszystkie odwołania w programie są bliskie, toteż problemy z odwołaniami dalekimi nie istnieją. Pliki typu ''exe'' zawierają ponadto dodatkowe informacje, np. adresy dalekich skoków, które są ustawiane w momencie wczytywania programu do pamięci komputera (wersjaw 16-bitowabitowym trybie pracy procesora), a także informacje potrzebne do [[łączenie|łączenia]] programu z [[Biblioteka dynamiczna|bibliotekami dynamicznymi]] ([[DLL]]). W 32- i 64-bitowym trybie procesora każdy uruchomiony proces (program) ma przydzieloną własną wirtualną przestrzeń adresową, co izoluje go od innych programów i czyni go niezależnym.
 
Kod maszynowy nie może być wykonywany przez procesory innego typu, niż ten, dla którego zostałyzostał napisanenapisany. Niesie to za sobą wiele problemów związanych z przenośnością programówoprogramowania. Aby ich uniknąć rozpowszechnia się programy w formie [[kod źródłowy|kodu źródłowego]] (np. oprogramowanie [[Wolne i Otwarte Oprogramowanie|FLOSS]]) lub w formie [[Kod bajtowy|kodu pośredniego]] (np. [[Java]], [[.NET Framework|.NET]]).
Generowanie kodu maszynowego następuje za pomocą translatora, który przekształca czytelny dla [[programista|programisty]] zapis w [[język programowania|języku programowania]] w odpowiadające mu kody instrukcji maszynowych. Postać i treść kodu maszynowego zależy nie tylko od kodu źródłowego programu, ale też od [[translator]]a, [[system operacyjny|systemu operacyjnego]], wersji [[biblioteka programistyczna|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 gotranslacji na niektóre postacie kodu maszynowego.
 
KodJeśli chodzi o kod źródłowy w [[asembler]]ze, to 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 [[programista|programisty]] zapis w [[język programowania|języku programowania]] w odpowiadające mu kody instrukcji maszynowych.
 
{{Języki programowania}}