La génération de code natif est l'étape du processus de compilation transformant l'arbre syntaxique abstrait enrichi d'informations sémantiques en code machine ou en bytecode spécialisé pour la plateforme cible. C'est l'avant dernière étape du processus de compilation qui se situe avant l'édition des liens.
La phase de génération de code natif inclue généralement:
La phase de génération de code natif doit prendre en compte au mieux les caractéristiques de la plateforme d'exécution (microprocesseur, machine virtuelle) pour générer du code qui s'y exécute le plus vite possible. Dans le cas d'un processeur, sa microarchitecture joue un rôle déterminant:
if
quel résultat a le plus de chances d'arriver afin de privilégier une branche pour l'instruction de branchement suivante.Dans le cas de la compilation à la volée, la génération de code natif doit être rapide et consommer peu de mémoire afin de ne pas pénaliser l'exécution du programme compilé. Il faut lors utiliser des algorithmes différents que pour une compilation séparée de l'exécution. De plus, un compilateur JIT peut profiter des informations de profilage obtenues lors de l'exécution pour choisir quelles parties du code sont à optimiser au maximum.