JavaRush /Java Blog /Random-TK /Maşyn kody we baýt kody: programmaňyz haýsy dilde gürleýä...

Maşyn kody we baýt kody: programmaňyz haýsy dilde gürleýär?

Toparda çap edildi
Java bilen ýaňy tanşyp başlaýanlarda köplenç maşyn kody we baýt kody düşünjeleri bar . Olar näme? Tapawutlar näme? Gysga bellikde, bu meseläni bir gezek ýapmak üçin olaryň aýratynlyklaryny mümkin boldugyça ýönekeý we düşnükli suratlandyrmaga synanyşarys.
Maşyn kody we baýt kody: programmaňyz haýsy dilde gürleýär?  - 1

Maşyn kody

Prosessor , aslynda gaty çylşyrymly we ösen kalkulýator. Onda dürli matematiki we baýt amallary ýerine ýetirilýän köp sanly ýat ýeri (registr diýilýär) bar. Maşyn kody, amallaryň yzygiderliliginiň we degişli maglumatlar toplumynyň takyk beýanydyr. Aslynda, kompýuteriňiziň prosessorynyň düşünýän ýeke-täk dili.

Dogabitdi gabat gelmezlik

Mundan başga-da, prosessorlaryň hemmesi bir dilde “gürlänok”. Diňe GDA we RISC arhitekturasynyň arasynda däl , eýsem bu “lagerleriň” arasynda hem tapawutlar bar .

CISC (Çylşyrymly görkezme toplumy hasaplaýyş), aşakdaky häsiýetler toplumy bilen häsiýetlendirilýän prosessor dizaýn düşünjesidir:

  • uzynlygy boýunça köp buýruk;
  • köp sanly reesim;
  • çylşyrymly görkezme kodlamagy.
RISC (Azaldylan görkezme toplumy hasaplaýyş) - peseldilen görkezme toplumy bolan prosessor. Buýruklar ýönekeý kodlamak bilen birmeňzeş formatda, gysga.
Prosessorlaryň täze nesilleri köne nesil modellerine ýönekeý bolmadyk goşmaça görkezmeler toplumyny hödürleýärler. Şol sebäpli bir arhitektura (ýa-da bir nesil prosessor) üçin düzülen programmalar beýleki enjamlarda işläp bilmeýär. Bularyň hemmesi, beýleki kompýuterlerde işlemegini üpjün etmek üçin programmalary täzeden düzmäge mejbur edýär. Şeýle-de bolsa, diňe prosessorlar sebäpli däl, eýsem programmalaryň we operasiýa ulgamynyň özara täsirindäki tapawutlar sebäpli hem täzeden düzmeli. Şol sebäpli Linux-da “Windows”, Windows-da bolsa “Linux” programmasyny işletmek mümkin däl.

Bytekod

Bytecode köp tarapdan maşyn koduna meňzeýär, diňe hakyky prosessordan däl-de, wirtualdan görkezmeler toplumyny ulanýar. Mundan başga-da, programmanyň işleýän hakyky prosessory üçin buýruklaryň ýerine ýetirilişini optimallaşdyrýan JIT düzüjisini ulanmaga gönükdirilen bölümleri öz içine alyp biler .
JIT düzülişi (Diňe wagtynda düzmek, uçuşda düzmek) ýa-da dinamiki düzmek (dinamiki terjime), kod koduny maşyn koduna ýa-da başga bir formata gönüden-göni ulanyp, baýt koduny ulanýan programma üpjünçiliginiň işleýşini ýokarlandyrmak üçin tehnologiýa. programma işleýär. Java-da “resmi” 9-njy wersiýa çenli diňe JIT düzüjisi bardy. Java 9-da başga bir düzüji peýda boldy we öňünden düzülýär (AoT). Bu aýratynlyk, Java synplaryny wirtual maşynda işlemezden ozal ýerli koda jemlemäge mümkinçilik berýär. Bu aýratynlyk, iň ýokary öndürijilige çäkli täsir edip, kiçi we uly programmalar üçin başlangyç wagtyny gowulandyrmaga niýetlenendir.
CISC prosessorlary üçin käbir görkezmeler prosessor tarapyndan goldanýan has çylşyrymly gurluşlara birleşdirilip bilner we RISC üçin tersine, has ýönekeý görkezmelere bölünip bilner.

Şeýle hem wirtual OS

Şeýle-de bolsa, baýt kody diňe prosessor görkezmelerini öz içine almaýar. Şeýle hem, programmanyň özüni alyp barşyny kompýuterde ulanylýan operasiýa ulgamyndan garaşsyz edýän wirtual operasiýa ulgamy bilen täsirleşmek üçin logika bar. Bu ulgam jaňlary we GUI köplenç programmanyň işleýän OS-dan garaşsyz bolan JVM -de aýdyň görünýär . Umuman aýdanyňda, JVM diňe wirtual ulgam / apparat döredýän Wirtual Box ýaly çözgütlerden tapawutlylykda programma prosesiniň başlamagyny öýkünýär .

JVM şuňa meňzeşmi?

Elbetde ýok. Şol bir DotNet CLI wirtual maşyn bolup, köplenç x86 gabat gelýän prosessorlary bolan Windows işleýän kompýuterlerde ulanylýar . Şeýle-de bolsa, beýleki ulgamlar üçin ýerine ýetiriş bar: munuň üçin amaly programmalar ARM (RISC) gabat gelýän prosessorlarda işleýän Windows RT- de işlemeli ýa-da üçünji tarap bolan Mono gurşawynda Linux / OSX- da işledip bilersiňiz (we şonuň üçin) doly gabat gelmeýär) bu platformalar üçin DotNet- iň durmuşa geçirilmegi . Şonuň üçin bu platforma, JVM ýaly dürli prosessorlarda we dürli OS-lerde işleýär. Has meňzeş çözgütler bar (köne we täze): LLVM , Flash SWF we başgalar. Käbir programmirleme dilleriniň öz wirtual maşynlary bar. Mysal üçin, CPython PY çeşmelerini PYC faýllaryna jemleýär - PVM -de işlemäge taýyn baýt kody . Ora-da has köne mysal bar - Lisp FASL (Fast Load) faýllaryna jemlenip bilner . Aslynda, deslapky koddan generator tarapyndan gurlan AST agajy bar. Bu faýllary Lisp terjimeçisi tarapyndan dürli platformalarda okap we ýerine ýetirip bolýar ýa-da häzirki ulanylýan enjam arhitekturasy üçin maşyn kody döretmek üçin ulanyp bolýar.
Teswirler
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION