En
informatique, un
langage intermédiaire (parfois abrégé en
IL, de l'anglais
Intermediate Language) est le langage d'une machine abstraite conçu pour l'analyse d'un
programme informatique. Le terme vient de son utilisation dans les
compilateurs, où un compilateur transcrit d'abord le
code source d'un programme en une forme plus adaptée pour les transformations d'amélioration de code, comme un état intermédiaire avant de générer du
code objet ou du
langage machine pour une machine cible, c’est-à-dire la machine sur laquelle sera exécutée le programme. La conception d'un langage intermédiaire diffère typiquement de celle du langage machine de trois manières fondamentales :
- Chaque instruction représente exactement une opération fondamentale ; par exemple les modes d'adressage « shift-add » communs dans les microprocesseurs n'y sont pas présents.
- Les informations de structures de contrôle peuvent ne pas être incluses dans l'ensemble d'instructions.
- Le nombre de registres peut être large, voire illimité.