Technopedia Center
PMB University Brochure
Faculty of Engineering and Computer Science
S1 Informatics S1 Information Systems S1 Information Technology S1 Computer Engineering S1 Electrical Engineering S1 Civil Engineering

faculty of Economics and Business
S1 Management S1 Accountancy

Faculty of Letters and Educational Sciences
S1 English literature S1 English language education S1 Mathematics education S1 Sports Education
  • Registerasi
  • Brosur UTI
  • Kip Scholarship Information
  • Performance
  1. Weltenzyklopädie
  2. Bytecode — Wikipédia
Bytecode — Wikipédia 👆 Click Here! Read More..
Un article de Wikipédia, l'encyclopédie libre.
Si ce bandeau n'est plus pertinent, retirez-le. Cliquez ici pour en savoir plus.
Si ce bandeau n'est plus pertinent, retirez-le. Cliquez ici pour en savoir plus.

Cet article ne cite pas suffisamment ses sources (mai 2019).

Si vous disposez d'ouvrages ou d'articles de référence ou si vous connaissez des sites web de qualité traitant du thème abordé ici, merci de compléter l'article en donnant les références utiles à sa vérifiabilité et en les liant à la section « Notes et références ».

En pratique : Quelles sources sont attendues ? Comment ajouter mes sources ?
Code binaire

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 (Just-In-Time compilation) 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. Un programme sous forme de bytecode peut donc être transmis d'une machine à une autre, et être interprété puis exécuté sans modification de celui-ci par différents types d'architectures matérielles. L'avantage est le même que pour les scripts, qui sont directement interprétés (et non compilés en bytecode). Cependant, le bytecode est plus concret, plus compact et plus facile à manipuler qu'un script, prévu pour être intelligible par l'homme. Pour ces raisons, les performances des interpréteurs de bytecode sont généralement bien meilleures que celles des interpréteurs de scripts.

Pour bénéficier de ces avantages, aujourd'hui de nombreux langages interprétés sont en fait compilés en bytecode avant d'être exécutés par un interpréteur. C'est le cas par exemple de PHP (lorsqu'il est utilisé pour des applications), de Tcl, de Python. Un programme Java est habituellement transmis sous forme de bytecode à une machine hôte qui utilisera une compilation à la volée pour traduire le bytecode en code machine avant exécution. Les implémentations actuelles de Perl et de Ruby utilisent non pas du bytecode, mais une structure en arbre qui se rapproche de la représentation intermédiaire des compilateurs.

Les p-codes diffèrent des bytecodes par le codage de leurs opérations, qui peut être de plusieurs octets avec une taille variable, tout comme les opcodes de nombreux processeurs. Ils ont un plus haut niveau descriptif, comme « afficher cette chaine de caractères » ou encore « effacer l'écran ». Le BASIC et quelques versions de Pascal utilisent un p-code.

Exemples

[modifier | modifier le code]
  • O-code de BCPL ;
  • CLISP, une implémentation de Common Lisp, ne compile qu'en bytecode ;
  • CMUCL, une implémentation de Common Lisp, peut compiler en bytecode ou en code natif ; le code natif est bien plus compact ;
  • OCaml peut compiler un bytecode compact, mais pas seulement ; le bytecode d'OCaml et son interpréteur (ocamlrun) semblent former l'une des combinaisons les plus efficaces [réf. nécessaire] parmi tous les bytecodes existants ;
  • Microsoft .NET Common Intermediate Language, exécuté par le Common Language Runtime ;
  • Java de Sun Microsystems (voir Bytecode Java) ;
  • Python, où un module (fichier module.py) est compilé vers du bytecode (fichier module.pyc) à l'importation durant l'exécution, mais pas nécessairement à l'exécution ;
>>> import dis #"dis" - Disassembler of Python byte code into mnemonics.
>>> dis.dis('print("Hello, World!")')
  1           0 LOAD_NAME                0 (print)
              2 LOAD_CONST               0 ('Hello, World!')
              4 CALL_FUNCTION            1
              6 RETURN_VALUE
  • Le SPIN du Propeller de Parallax Inc.

Voir aussi

[modifier | modifier le code]

Sur les autres projets Wikimedia :

  • bytecode, sur le Wiktionnaire
v · m
Exécution informatique
Concepts généraux
  • Programme informatique
  • Langage intermédiaire
  • Chaîne de compilation
  • Fichier exécutable
  • Interprétation
  • Environnement d'exécution
Types de code
  • Code source
  • Code objet
  • Bytecode
  • Code machine
  • Microcode
  • Instruction-machine
Compilation
  • Compilation à la volée
  • Compilation anticipée
  • Préprocesseur
  • Compilateur source à source
anticipée
  • GNU Compiler Collection (C et C++)
  • LLVM
  • LDL
  • GHC (Haskell)
  • Javac (Java)
  • Phalanger (PHP)
  • Free Pascal (Pascal)
à la volée
  • V8, SpiderMonkey (Javascript)
  • PyPy (Python)
Machines virtuelles
  • ART
  • CIL (C#, F#, Visual Basic .NET)
  • Machine virtuelle Java
    • HotSpot
    • GraalVM
  • HHVM (PHP)
  • CPython (Python)
  • icône décorative Portail de la programmation informatique
Ce document provient de « https://fr.teknopedia.teknokrat.ac.id/w/index.php?title=Bytecode&oldid=222562901 ».
Catégories :
  • Langage de programmation
  • Compilateur
Catégories cachées :
  • Article manquant de références depuis mai 2019
  • Article manquant de références/Liste complète
  • Article à référence nécessaire
  • Portail:Programmation informatique/Articles liés
  • Portail:Informatique/Articles liés

  • indonesia
  • Polski
  • الرية
  • Deutsch
  • English
  • Español
  • Français
  • Italiano
  • مصر
  • Nederlands
  • 本語
  • Português
  • Sinugboanong Binisaya
  • Svenska
  • Українска
  • Tiếng Việt
  • Winaray
  • 中文
  • Русски
Sunting pranala
Pusat Layanan

UNIVERSITAS TEKNOKRAT INDONESIA | ASEAN's Best Private University
Jl. ZA. Pagar Alam No.9 -11, Labuhan Ratu, Kec. Kedaton, Kota Bandar Lampung, Lampung 35132
Phone: (0721) 702022
Email: pmb@teknokrat.ac.id