Překlad zdrojového textu na binární spustitelný program probíhá postupně v následujících krocích:

Předzpracování
Cílem je usnadnit práci překladači. Nekontroluje se syntaktická správnost. Provádí se jen záměna textů, např. identifikátorů konstant za odpovídající číselné hodnoty. Dále se odstraňují komentáře, vkládají se určené hlavičkové soubory, zpracovávají se makra.
Syntaktická analýza
Ze zdrojového textu se generují syntaktické stromy.
Generování RTL kódu
RTL (Register Transfer Language) je mezijazyk podobný Lispu. Je ideální pro strojové zpracování a je tedy vhodný pro optimalizaci. Tento kód je nezávislý na původním jazyku a překlad od této chvíle probíhá nezávisle na programovacím jazyku vstupních zdrojových souborů.
Optimalizace
Tato část je rozdělena do několika magických kroků.
  1. Optimalizace skoků - Snaží se zjednodušit skoky, vypouští nedosažitelný kód. V některých případech rozepisuje cykly zapsané pomocí skoků.
  2. Prohlížení registrů - Zjistí se první a poslední přístup do každého z registrů. Na tomto základě potom lze některé proměnné sloučit.
  3. Větvení skoků - Detekují se podmíněné skoky, které ukazují na jiné skokové instrukce, jejichž podmínka je shodná s podmínkou u prvního skoku. Takové skoky přesměruje přímo na cíl druhého skoku.
  4. Eliminace podvýrazů - Pokouší se dosadit konstaty do výrazů v podmínkách. Pokud se nějaký podmíněný skok stane nepodmíněným, pustí se znovu optimalizace skoků (a).
  5. Optimalizace cyklů - Překladač zařadí před cyklus výrazy, které se v cyklu nemění. Volitelně také může provádět rozepisování cyklů, případně redukci iteračních proměnných.
  6. Jednoduché alokování registrů - Provádí se jen pokud optimalizace není zapnuta. Registry RTL (proměnné) se umístí do registrů procesoru, případně na zásobník.
  7. Analýza toku dat - Program se rozdělí na základní bloky. V tomto kroku se také vyřadí výpočty, jejichž výsledek není nikde použit.
  8. Kombinování instrukcí - Překladač se snaží spojit skupiny dvou až tří RTL instrukcí do jedné.
  9. Plánování instrukcí - Instrukce se přemístí tak, aby jich bylo možno provádět nebo připravovat více, například na RISCových strojích.
  10. Alokování lokálních registrů - Určí se lokální proměnné, které budou uloženy ve výsledném kódu. Některé proměnné ze zdrojového textu totiž mohou být například sloučeny s jinými a nevyskytnou se tedy v hotovém programu.
  11. Alokace globálních registrů - Podobně jako pro lokální proměnné.
Dále se opakuje plánování instrukcí a optimalizace skoků.
Převod RTL do assembleru
V podstatě se jen vypustí struktury jazyka RTL.
Assembler
Vznikne objektový kód uložený v souboru s příponou .o. Tento kód je téměř hotový program, pouze adresy proměnných a funkcí ještě nejsou známy a jsou tedy v .o souboru zapsány relativně.
Sestavení
Relativní adresy v objektovém souboru jsou nahrazeny adresami skutečnými. Dále jsou provedeny odkazy na dosud neznámé identifikátory, např. na knihovní funkce, přidá se startovací kód. Po sestavení objektových modulů vznikne spustitelný binární program.