kompilator jest specjalnym programem, który przetwarza instrukcje napisane w określonym języku programowania i zamienia je w język maszynowy lub „kod”, którego używa procesor komputera. Zazwyczaj programista pisze wypowiedzi językowe w języku takim jak Pascal lub C po jednej linijce za pomocą edytora. Utworzony plik zawiera tzw. instrukcje źródłowe. Następnie programista uruchamia odpowiedni kompilator języka, określając nazwę pliku zawierającego instrukcje źródłowe.
podczas wykonywania (uruchamiania) kompilator najpierw parsuje (lub analizuje) wszystkie instrukcje języka jeden po drugim, a następnie, w jednym lub kilku kolejnych etapach lub „przechodzi”, buduje kod wyjściowy, upewniając się, że instrukcje odnoszące się do innych instrukcji są poprawnie odwoływane w kodzie końcowym. Tradycyjnie wyjście kompilacji nazywane jest kodem obiektowym lub czasem modułem obiektowym . (Zauważ, że termin „obiekt” nie jest tutaj związany z programowaniem obiektowym.) Kod obiektowy jest kodem maszynowym, który procesor może wykonać jedną instrukcję na raz.
język programowania Java, język używany w programowaniu obiektowym, wprowadził możliwość kompilacji danych wyjściowych (zwanych bytecode), które mogą być uruchamiane na dowolnej platformie komputerowej, dla której dostarczona jest Wirtualna Maszyna Java lub interpreter kodu bajtowego do konwersji kodu bajtowego na instrukcje, które mogą być wykonywane przez rzeczywisty procesor sprzętowy. Korzystając z tej maszyny wirtualnej, bajtkod może być opcjonalnie przekompilowany na platformie wykonawczej przez kompilator just-in-time. (Zobacz też: Java compiler)
tradycyjnie w niektórych systemach operacyjnych wymagany był dodatkowy krok po kompilacji-rozwiązanie względnej lokalizacji instrukcji i danych, gdy więcej niż jeden moduł obiektowy miał być uruchomiony w tym samym czasie i odwołują się one do siebie nawzajem sekwencji instrukcji lub danych. Proces ten był czasami nazywany edycją połączenia, A wyjście znane jako moduł obciążenia.
kompilator pracuje z tak zwanymi językami 3GL i wyższego poziomu. Asembler działa na programach napisanych przy użyciu języka asemblera procesora.