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 kodu źródłowego (np. oprogramowanie FLOSS) lub w formie kodu pośredniego (np. Java, .NET).

Generowanie kodu maszynowego następuje za pomocą translatora, który przekształca czytelny dla programisty zapis w 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 translatora, systemu operacyjnego, wersji bibliotek, typu procesora i jego języka maszynowego. Języki wysokiego poziomu wraz z odpowiednimi bibliotekami i kompilatorami umożliwiają 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.

Jeśli chodzi o kod źródłowy w asemblerze, to jest silnie związany z konkretną architekturą procesora i zazwyczaj nie można go uruchomić na innej bez wprowadzania zmian.

Przypisy

Kategoria:Asembler