Бајт-код — разлика између измена
Садржај обрисан Садржај додат
м Разне исправке; козметичке измене |
|||
Ред 5:
Назив бајткод потиче од сета инструкција који садржи [[Опкод|оперативни]] [[бајт]] у којем су постављени разноврсни параметри. Бајткод се у [[Програмски језик|програмском језику]] може користити да би се упростила [[Интерпретатор (рачунарство)|интерпретација]], или да би се смањила зависност хардвера или [[Оперативни систем|оперативног система]] омогућавајући истом коду да може да се покрене на различитим платформама. Бајткод често може или да обавља улогу [[Виртуелна машина|виртуалне машине]] (интерпретатора) или да се убаци у [[машински код]] ради бољих перформанси.
Пошто се инструкције бајткода технолошки обрађују кроз софтвер, могу бити комплексни, и поред тога свакако захтевају традиционалне инструкције хардвера; виртуалне [[Стек машина|стек машине]] су врло честе, мада су изграђене и виртуалне машине [[Машина регистар|регистрацију података]].<ref>[http://www.jucs.org/jucs_11_7/the_implementation_of_lua/jucs_11_7_1159_1176_defigueiredo.html The Implementation of Lua 5.0] involves a register-based virtual machine.</ref><ref>{{
== Извршавање ==
Бајткод програм може да се изврши рашчлањивањем записа и ''директним'' извршење инструкција, једну по једну. Оваква врста ''бајткод интерпретатора'' је веома преносива. Неки системи, звани динамички преводиоци, или "[[Just-in-time компилација|just-in-time]]"(ЈИТ) преводиоци , преводе бајткод у машински језик кад год је то потребно у [[Рантајм|рантајму]]: ово помаже виртуалној машини да побољша хардвер, а да се при томе преносивост бајткода не губи. На пример, [[Јава (програмски језик)|Јава]] и [[Smalltalk|Смалталк]] код је форматиран као бајткод, па га
Због овог побољшања перформанси, данас многи програмски језици покрећу своје програме у две етапе, прво преводе изворни код у бајткод и после убацују бајткод у виртуалну машину. Овде су виртуелне машине базиране на бајткоду, то су [[Јава (програмски језик)|Јава]], [[Пајтон (програмски језик)|Пајтон]], [[PHP|ПХП]],<ref>Although [[PHP]] opcodes are generated each time the program is launched, and are always interpreted and not Just-In-Time compiled</ref> [[Tcl|Тцл]] и [[Форт (програмски језик)|Форт]] (мада је [[Форт (програмски језик)|Фортова]] виртуелна машина мало другачија, па се и бајткодови преводе на својствен начин). Програмски језици као што су [[Перл (програмски језик)|Перл]] и [[Руби (програмски језик)|Рубy 1.8]] користе [[апстрактно синтаксно стабло]] како би расчланили изворни код.
Недавно су аутори [[V8 (JavaScript машина)|В8]] <ref>{{
== Примери ==
* [[Actionscript|ActionScript]] се извршава у ActionScript виртуелној машини (АВМ), која је део Flash Playerа и AIR. ActionScript код се типично претвара у бајткод формат од стране [[Компилатор|преводиоца]]. Примери преводиоца укључују и онај који је направљен у Adobe Flash Professional и онај који је направљен у Adobe Flash Builder и доступан у the Adobe Flex SDK.
* [[Adobe Flash]] објекти
* [[BANCStar (програмски језик|BANCStar]], првобитно бајткод за прављење алата интерфејса али се већ користи као сопствени језик.<br />
* [[Беркли филтер пакет]]<br />
* [[Библиотека инжењеринга бајткода]]
* [[Јава виртуелна машина|Преводиоци од Ц до Јавине виртуелне машине]] <br />
* [[CLISP]] имплементација [[Common Lisp]]-а коришћена је само за превођење бајтокда већ много година; међутим, сада такође подржава превођење на матерњи код уз помоћ [[ГНУ муња|ГНУ муње]].<br />
* [[CMUCL]] и [[Scieneer Common Lisp]] имплементације [[Common Lisp]]-а могу преводити и на бајткод и на матерњи код; бајткод је много компактнији<br />
* [[Common средњи Језик|Common средњи језик]] извршен је од стране [[CLR|рантајма Common језика]]. Користе га [[.NET Framework|Microsoft .NET]] језици као што је [[C Sharp|C#]].<br />
* Далвик бајткод, дизајниран за [[Андроид (оперативни систем)|Андроид]] платформу, извршава се од стране [[Далвик (софтвер)|Далвик виртуалне машине.]]<br />
* Дис бајткод, дизајниран од стране [[Инферно (оперативни систем)|Инферна (оперативног система)]], врши се од стране [[Дис виртуелна машина|Дис виртуелне машине]].<br />
* [[АјфелСтудио]] за [[Ајфел (програмски језик)|Ајфел програмски језик]]<br />
* [[Амстердам комплет преводилаца|ЕМ]] -
* [[Емацс]] је текст едитор који се са већином својих функционалности спроводи у [[Специфичан дијалект|специфичном дијалекту]] [[Lisp|Лиспа]]. Ове карактеристике су преведене у бајткоду. Ова архитектура омогућава корисницима да прилагоде едитор са високим нивоом језика, који је након превођења у бајткод омогућава интер- вал разумну перформансу.<br />
* [[Embeddable Common Lisp]] имплементација [[Common Lisp]]-а може се превести у бајткод или у С код.<br />
* Ericsson имплементација [[Erlang (програмски језик)|
* [[Icon (програмски језик)|Icon]] и [[Unicon (програмски језик)|Unicon]]<ref>[http://unicon.sourceforge.net/book/ib.pdf The Implementation of Icon and Unicon a Compendium]</ref> програмски језици<br />
* [[Infocom]]<ref>[http://www.cs.arizona.edu/icon/ftp/doc/ib1up.pdf The Implementation of the Icon Programming Language]</ref> користи [[З-Машина|З-Машину]] да своје софтверске апликације учини преношљивијим.<br />
* [[Јава бајткод]], који се извршава од стране [[Јава виртуелна машина|Јава виртуелне машине]]
** [[ASM]]<br />
** [[BCEL]]<br />
** [[Javassist]]<br />
** [[JMangler]]<br />
* [[ВМНР]], модуларни бајткод преводилац и виртуелна машина<br />
* [[Lua|Луа]] користи бајткод виртуелну машину засновану на регистру.<br />
* м код [[MATLAB]] програмског језика<ref>For the details refer to {{cite web | url = http://patft.uspto.gov/netacgi/nph-Parser?Sect1=PTO1&Sect2=HITOFF&d=PALL&p=1&u=%2Fnetahtml%2FPTO%2Fsrchnum.htm&r=1&f=G&l=50&s1=6973644.PN.&OS=PN/6973644&RS=PN/6973644 | title=United States Patent 6,973,644}}</ref><br />
* [[OCaml]] програмски језик опционо преводи на компактну бајткод форму.<br />
* [[П-код машина|П-код]] [[УЦСД Паскала]] је имплементација програмског језика [[Паскал (програмски језик)|Паскал]]<br />
* [[Папагај виртуелна машина]]
* [[Pick BASIC]] такође се односи на Data BASIC или [[MultiValue BASIC]]<br />
* [[R (програмски језик)|Р окружење за статистичко рачунарство]] нуди бајткод преводиоца преко пакета преводиоца, сада стандардно са Р верзијом 2.13.0. Могуће је превести ову верзију Р тако да је базни и препоручени пакети имају предност од овога.<ref>For the details refer to {{cite web | url =http://cran.r-project.org/doc/manuals/R-admin.html#Byte_002dcompiler | title=R Installation and Administration}}</ref><br />
* [[Шема 48]] имплементација Шеме користи бајткод интерпретатор<br />
* Бајткодови многих имплементација [[Smalltalk|Смалталка]] програмског језика<br />
* [[Спин (програмски језик)|Спин]] преводилац уграђен у [[микроконтролер]] [[Паралакс пропелер|пропелера]] [[Паралакс]]<br />
* [[SWEET16]]<br />
* [[Tcl]]<br />
* [[Visual FoxPro]] преводи на бајткод<br />
* [[YARV]] и [[Rubinius]] за [[Руби (програмски језик)|Руби]].<br />
== Белешке ==
{{Reflist|1}}
[[Категорија:Софтвер за виртуелизацију]]
|