För att konvertera ett språk på hög nivå (som Python, Java, C ++, etc.) till maskinkod så att den kan köras, behöver du en process som involverar ett eller flera av följande steg:
1. sammanställning: En kompilator översätter hela programmet på hög nivå till maskinkod (eller ibland monteringskod, som sedan monteras i maskinkod) * före * körning. Detta resulterar i en körbar fil som kan köras direkt av datorns processor. Sammanställda språk erbjuder i allmänhet bättre prestanda än tolkade språk. Exempel på kompilatorer inkluderar GCC (för C/C ++) och Javac (för Java).
2. Tolkning: En tolk översätter och kör programmet på hög nivå en rad (eller uttalande) åt gången. Den producerar inte en separat körbar fil; Istället kör den direkt koden när den översätts. Detta är i allmänhet långsammare än sammanställning men erbjuder mer flexibilitet, särskilt för dynamiska språk. Python och JavaScript är främst tolkade språk, även om vissa just-in-time (JIT) sammanställningstekniker används för att förbättra prestandan.
3. Just-in-Time (JIT) Sammanställning: Denna hybridmetod kombinerar aspekter av sammanställning och tolkning. Koden tolkas initialt, men ofta utförs delar sammanställs till maskinkod för snabbare körning på efterföljande körningar. Java's JVM (Java Virtual Machine) och några moderna JavaScript -motorer (som V8 i Chrome) använder JIT -sammanställning.
Sammanfattningsvis är kärnbehovet en översättare (kompilator eller tolk eller ett system som använder båda). Översättaren tar källkoden på hög nivå som inmatning och producerar antingen direkt körbar maskinkod eller en mellanliggande representation som kan behandlas ytterligare till maskinkod. Denna översättare måste förstå syntaxen och semantiken i högnivåspråket och målmaskinens arkitektur (t.ex. x86, arm). Stödverktyg som länkar (för att kombinera flera sammanställda moduler) och monterare (för att konvertera monteringskod till maskinkod) kan också vara involverade i den övergripande processen.