Para converter uma linguagem de alto nível (como Python, Java, C ++, etc.) em código da máquina para que possa ser executado, você precisa de um processo envolvendo uma ou mais das seguintes etapas:
1.
Compilação: Um compilador traduz todo o programa de alto nível em código da máquina (ou às vezes o código de montagem, que é então montado no código da máquina) * antes de * execução. Isso resulta em um arquivo executável que pode ser executado diretamente pelo processador do computador. Os idiomas compilados geralmente oferecem melhor desempenho do que os idiomas interpretados. Exemplos de compiladores incluem GCC (para C/C ++) e Javac (para Java).
2.
Interpretação: Um intérprete traduz e executa o programa de alto nível uma linha (ou instrução) por vez. Não produz um arquivo executável separado; Em vez disso, ele executa diretamente o código à medida que está sendo traduzido. Isso geralmente é mais lento que a compilação, mas oferece mais flexibilidade, especialmente para idiomas dinâmicos. Python e JavaScript são idiomas interpretados principalmente, embora algumas técnicas de compilação just-in-time (JIT) sejam usadas para melhorar o desempenho.
3. Compilação
just-in-time (JIT): Essa abordagem híbrida combina aspectos de compilação e interpretação. O código é interpretado inicialmente, mas as peças executadas frequentemente são compiladas no código da máquina para uma execução mais rápida nas execuções subsequentes. JVM de Java (Java Virtual Machine) e alguns motores javascript modernos (como V8 no Chrome) usam a compilação JIT.
Em resumo, o requisito principal é um
tradutor (compilador ou intérprete, ou um sistema que usa ambos). O tradutor pega o código-fonte de alto nível como entrada e produz código de máquina executável diretamente ou uma representação intermediária que pode ser processada posteriormente no código da máquina. Este tradutor precisa entender a sintaxe e a semântica da linguagem de alto nível e a arquitetura da máquina de destino (por exemplo, x86, braço). Ferramentas de suporte como vinculadores (para combinar vários módulos compilados) e montadores (para converter o código de montagem em código da máquina) também podem estar envolvidos no processo geral.