Résumé
vignette|Code binaire en En informatique, le bytecode (terme anglais signifiant « code en bytes ») est un code intermédiaire entre les instructions machines et le code source, qui n'est pas directement exécutable. Le bytecode (également appelé code portable ou p-code) peut être créé à la volée et résider en mémoire (compilation à la volée, JIT en anglais) ou bien résider dans un fichier, généralement binaire qui représente le programme, tout comme un fichier de code objet produit par un compilateur. Puisque c'est un code qui n'est pas exécutable directement par un processeur (à l'exception de certains processeurs gérant le bytecode Java nativement), il est utilisé par les créateurs de langages de programmation en guise de code intermédiaire réduisant la dépendance vis-à-vis du matériel et facilitant son interprétation sur plusieurs architectures. Certains compilateurs, comme LLVM, et langages de scripts, comme SmallTalk, Java ou certaines implémentations de Ruby (telles que JRuby, Ruby.NET ou SmallRuby), utilisent le bytecode comme représentation intermédiaire avant la transformation en code machine vers l'architecture cible (x86, ARM, MIPS, etc.). Certains systèmes, appelés « traducteurs dynamiques » ou « compilateurs à la volée » (JIT (just-in-time) compilers en anglais), traduisent le bytecode en code machine au fur et à mesure de l’exécution, cela permet d’accélérer l’exécution sur les boucles ou les fonctions appelées plusieurs fois tout en évitant de stocker sur disque ou de transférer via les réseaux des données précompilées. Cette technique est notamment utilisée dans le langage Java et dans les émulateurs de systèmes (ordinateurs ou consoles de jeu par exemple), retranscrivant les instructions d'un langage machine à un autre et plus généralement d'une architecture matérielle à une autre. Un programme à base de bytecode est exécuté par un interpréteur appelé machine virtuelle, car elle exécute le code tout comme un microprocesseur. L'avantage est la portabilité : le même bytecode peut être exécuté sur diverses plates-formes ou architectures pour lesquelles un interpréteur existe.
À propos de ce résultat
Cette page est générée automatiquement et peut contenir des informations qui ne sont pas correctes, complètes, à jour ou pertinentes par rapport à votre recherche. Il en va de même pour toutes les autres pages de ce site. Veillez à vérifier les informations auprès des sources officielles de l'EPFL.