close

Byte kode

Gå til navigation Gå til søg

Bytekoden eller mellemkoden [ 1 ] ​[ 2 ] ​[ 3 ]​ er et mere abstrakt mellemsprog end maskinsprog . Det behandles normalt som en binær fil, der indeholder et eksekverbart program, der ligner et objektmodul, som er en binær fil, der er produceret af compileren , hvis indhold er objektkode eller maskinkode.

Mellemkode får sit navn, fordi hver opkode normalt er en byte lang , selvom instruktionskodens længde varierer. Hver instruktion har en opkode mellem 0 og 255 efterfulgt af parametre såsom registre eller hukommelsesadresser. Dette ville være beskrivelsen af ​​et typisk tilfælde, selvom specifikationen af ​​bytekoden i høj grad afhænger af sproget.

Som mellemkode er det en form for output, der bruges af sprogimplementere til at reducere afhængigheden af ​​specifik hardware og for at gøre det lettere at fortolke. Mindre hyppigt bruges bytekode som mellemkode i en compiler. Nogle systemer, kaldet dynamiske oversættere eller just-in-time compilere, oversætter bytekode til maskinkode umiddelbart før udførelse for at forbedre udførelseshastigheden.

Bytekodeprogrammer fortolkes normalt af en bytekodefortolker ( normalt kaldet en virtuel maskine , da den er analog med en computer). Dens fordel er dens portabilitet : den samme binære kode kan udføres på forskellige platforme og arkitekturer. Det er den samme fordel, som fortolkede sprog er til stede. Men fordi bytekode generelt er mindre abstrakt, mere kompakt og mere maskinorienteret end et program beregnet til menneskelig modifikation, er dens ydeevne ofte bedre end fortolkede sprog. På grund af denne ydeevneforbedring er mange fortolkede sprog faktisk kompileret til bytekode og derefter kørt af en bytekodefortolker . Blandt disse sprog er Perl , Gambas , PHP og Python . I tilfælde af Java transmitteres den normalt som bytekode til den modtagende maskine, som bruger en just-in-time compiler til at kompilere bytekoden til indbygget maskinkode før udførelse, og dermed spare fortolkningsprocesser.

Interessante er også såkaldte p-koder, der ligner mellemkoder, men hvis opkoder kan bestå af mere end én byte og kan variere i størrelse, ligesom opkoderne for mange CPU'er. Disse koder fungerer på et meget højt niveau, herunder instruktioner som "print denne streng" eller "ryd skærmen". For eksempel bruger BASIC p-Code.

I november 2019 danner Mozilla, Fasty, Intel og Red Hat Bytecode Alliance, en virksomhed, der har til formål at fremme brugen af ​​WebAssembly- sproget i Linux-miljøer og integrere enhver browser som Safari, Chrome eller Firefox. [ 4 ]

Eksempler

>>>  import  dis  # "dis" - Python bytecode disassembler til mnemonics. 
>>>  dis . dis ( 'print("Hej, verden!")' ) 
           1  0  LOAD_NAME      0  ( print ) 
             2  LOAD_CONST     0  ( 'Hej, verden!' ) 
             4  CALL_FUNCTION  1 
             6  RETURN_VALUE
  • ActionScript kører i ActionScript Virtual Machine (AVM), som er en del af Flash Player og AIR . ActionScript-kode konverteres normalt til bytekode -format af en compiler . Eksempler på kompilatorer omfatter en indbygget i Adobe Flash Professional og en indbygget i Adobe Flash Builder og tilgængelig i Adobe Flex SDK.
  • Adobe Flash-objekter
  • BANCStar, oprindeligt bytekode til et grænsefladeopbygningsværktøj, men også brugt som sprog
  • Berkeley pakkefilter
  • Bytecode engineering bibliotek
  • C til Java Virtual Machine Compilers
  • CLISP implementering af Common Lisp bruges til kun at kompilere til bytekode i mange år; dog understøtter den nu også kompilering til native kode ved hjælp af GNU lightning
  • CMUCL og Scieneer Common Lisp-implementeringer af Common Lisp kan kompilere til både indbygget kode og bytekode, hvilket er meget mere kompakt
  • Common Intermediate Language udført af Common Language Runtime , brugt af .NET Framework- sprog som C# .
  • Dalvik bytecode, designet til Android -platformen , udføres af den virtuelle Dalvik-maskine
  • Dis-bytekoden, designet til Inferno (operativsystemet) , udføres af den virtuelle Dis-maskine
  • EiffelStudio til programmeringssproget Eiffel
  • EM, den virtuelle Amsterdam Compiler Kit-maskine, der bruges som både et kompileringsmellemsprog og et moderne bytekodesprog
  • Emacs er en teksteditor med de fleste af dens funktioner implementeret af Emacs Lisp , dens indbyggede dialekt af Lisp. Disse funktioner er kompileret til bytecode . Denne arkitektur giver brugerne mulighed for at tilpasse editoren med et sprog på højt niveau, som efter kompilering til bytekode giver en rimelig ydeevne.
  • Den Embeddable Common Lisp-implementering af Common Lisp kan kompilere til bytekode eller C-kode
  • Ericsson-implementeringen af ​​Erlang bruger BEAM-bytekoder
  • Icon og Unicon programmeringssprog
  • Infocom brugte Z-maskinen til at gøre sine softwareapplikationer mere bærbare
  • Java bytecode , som udføres af den virtuelle Java-maskine
    • ASM
    • BCEL
    • Javasist
    • JMangler
  • KEYB, MS-DOS / PC DOS -tastaturdriveren med dens KEYBOARD.SYS -ressourcefil, der indeholder layoutoplysninger og korte p-kodesekvenser udført af en tolk i den residente driver.
  • LSL, et scriptsprog , der bruges i virtuelle verdener, kompilerer til bytekode , der udføres i en virtuel maskine. Second Life har den originale Mono-version, Inworldz udviklede Phlox-versionen.
  • Lua -sproget bruger en register-baseret bytekode virtuel maskine
  • MATLAB sprog m-kode
  • multiplan
  • O-kode for BCPL programmeringssproget
  • OKaml af sproget kompileres eventuelt til en kompakt form for bytekode
  • p-kode for UCSD Pascal implementering af Pascal sproget
  • Virtuel papegøjemaskine
  • Vælg BASIC aka Data BASIC eller MultiValue BASIC
  • R Environment for Statistical Computing tilbyder en bytekode- kompiler via compilerpakken, nu standard med R version 2.13.0 Det er muligt at kompilere denne version af R, så basis- og anbefalede pakker udnytter den.
  • Pyramid 2000 eventyrspil
  • Skema 48 Skemaimplementering ved hjælp af bytekodefortolkeren
  • Bytekoder for mange implementeringer af Smalltalk -sproget
  • Spin- fortolkeren indbygget i Parallax Propeller-mikrocontrolleren
  • SQLite -databasemotoren oversætter SQL-sætninger til et brugerdefineret bytekodeformat.
  • SØD16
  • tcl
  • Lille BASIC
  • Visual FoxPro kompilerer til bytekode
  • WebAssembly
  • YARV og Rubinius for Ruby

Referencer

  1. ^ Wolf, Gunnar (9. september 2015). Grundlæggende om operativsystemer . Lulu.com. ISBN  978-607-02-6544-0 . Hentet 5. august 2022 . 
  2. Pérez, Juan Carlos Moreno. Objektorienteret programmering . RA-MA Publishing Group . Hentet 5. august 2022 . 
  3. Zapien, Rosa Hernández de Lapién (2005). Apex Computer Science Terminology for Tolke. Engelsk-spansk ordliste. . Rosie Zapien. ISBN  978-0-9772521-4-5 . Hentet 5. august 2022 . 
  4. "Mozilla, Fasty, Intel og Red Hat danner Bytecode Alliance." .