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

[wersja przejrzana][wersja przejrzana]
Usunięta treść Dodana treść
m drobne merytoryczne rys.
int.
Linia 13:
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 (w 16-bitowym 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ł napisany. Niesie to za sobą wiele problemów związanych z przenośnością oprogramowania. 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 translacji na niektóre postacie kodu maszynowego.