JavaRush /Blog Jawa /Random-JV /Kode mesin lan kode byte: apa basa program sampeyan?

Kode mesin lan kode byte: apa basa program sampeyan?

Diterbitake ing grup
Sing nembe kenal karo basa Jawa kerep bingung babagan konsep kode mesin lan kode byte . Apa iku? Apa bedane? Ing cathetan singkat, kita bakal nyoba kanggo njlèntrèhaké fitur-fitur kasebut kanthi gampang lan cetha supaya bisa nutup masalah iki sapisan lan kanggo kabeh.
Kode mesin lan kode byte: apa basa program sampeyan?  - 1

Kode mesin

Prosesor , ing intine, kalkulator sing rumit lan canggih. Wis akeh lokasi memori (disebut ndhaftar) ing lan antarane kang macem-macem operasi matématika lan byte dileksanakake. Kode mesin persis minangka gambaran saka urutan operasi lan set data sing ana. Nyatane, iku mung basa sing dimangerteni prosesor komputer.

Incompatibility kongenital

Kajaba iku, ora kabeh prosesor "ngomong" basa sing padha. Ana bedane ora mung antarane arsitektur CISC lan RISC , nanging uga ing "kemah" kasebut.

CISC (Complex Instruction Set Computing) minangka konsep desain prosesor sing ditondoi dening set properti ing ngisor iki:

  • akeh prentah, beda dawane;
  • akeh mode alamat;
  • coding instruksi kompleks.
RISC (Reduced Instruction Set Computing) - prosesor karo set instruksi suda. Prentah kasebut kanthi format sing padha, cendhak, kanthi kodhe prasaja.
Prosesor generasi anyar ngenalake set instruksi tambahan sing ora dingerteni model generasi lawas. Amarga iki, program sing disusun kanggo siji arsitektur (utawa siji generasi pemroses) ora bisa mlaku ing piranti keras liyane. Kabeh iki meksa kita nyusun ulang program kanggo mesthekake yen bisa digunakake ing komputer liyane. Nanging, sampeyan kudu nyusun ulang ora mung amarga prosesor, nanging uga amarga beda interaksi program lan sistem operasi. Iku amarga saka wong-wong mau ora bisa mbukak program "Windows" ing Linux, lan program "Linux" ing Windows.

Bytecode

Bytecode ing akeh cara padha kode mesin, mung nggunakake pesawat saka instruksi ora saka prosesor nyata, nanging saka virtual. Kajaba iku, bisa uga kalebu bagean sing fokus ing panggunaan JIT compiler , sing ngoptimalake eksekusi printah kanggo prosesor nyata ing ngendi program kasebut mlaku.
Kompilasi JIT (Kompilasi Just-in-time, kompilasi on-the-fly) utawa kompilasi dinamis (terjemahan dinamis) yaiku teknologi kanggo nambah kinerja sistem piranti lunak sing nggunakake bytecode kanthi cara nglumpukake bytecode menyang kode mesin utawa menyang format liyane langsung nalika program mlaku. "Resmi" ing Jawa nganti versi 9 mung ana kompiler JIT. Ing Jawa 9, kompiler liyane wis muncul, lan kompilasi luwih dhisik (AoT). Fitur iki ngidini kelas Java dikompilasi dadi kode asli sadurunge mlaku ing mesin virtual. Fitur iki dirancang kanggo nambah wektu wiwitan kanggo aplikasi cilik lan gedhe, kanthi pengaruh winates ing kinerja puncak.
Kanggo pemroses CISC , sawetara instruksi bisa digabung dadi struktur sing luwih kompleks sing didhukung prosesor, lan kanggo RISC , sebaliknya, bisa dipérang dadi urutan instruksi sing luwih prasaja.

Uga OS virtual

Nanging, kode byte ngemot ora mung instruksi prosesor. Iku uga ngandhut logika kanggo sesambungan karo sistem operasi virtual, kang ndadekake prilaku aplikasi sawijining saka sistem operasi digunakake ing komputer. Iki katon kanthi jelas ing JVM , ing ngendi bisa digunakake karo telpon sistem lan GUI asring independen saka OS sing program kasebut mlaku. Umumé, JVM niru peluncuran proses program, ora kaya solusi kaya Virtual Box , sing mung nggawe sistem/perangkat keras virtual.

Apa JVM mung kaya iki?

Mesthi ora. DotNet CLI sing padha uga mesin virtual, sing paling kerep digunakake ing komputer sing nganggo Windows karo prosesor sing kompatibel karo x86. Nanging, ana implementasine kanggo sistem liyane: aplikasi kanggo iku kudu mbukak ing Windows RT mlaku ing ARM (RISC) prosesor kompatibel, utawa sampeyan bisa mbukak ing Linux / OSX ing lingkungan Mono , kang pihak katelu (lan mulane. ora kompatibel) implementasine DotNet kanggo platform kasebut. Dadi platform iki, kaya JVM , mlaku ing prosesor sing beda lan OS sing beda. Ana akeh solusi sing padha (loro lawas lan anyar): LLVM , Flash SWF , lan liya-liyane. Sawetara basa pamrograman duwe mesin virtual dhewe. Contone, CPython nglumpukake sumber PY menyang file PYC - kompilasi kode byte sing disiapake kanggo mbukak ing PVM . Utawa ana conto sing luwih lawas - Lisp bisa dikompilasi menyang file FASL (Fast Load). Ing kasunyatan, padha ngemot wit AST dibangun dening generator saka kode sumber. File kasebut bisa diwaca lan dieksekusi dening interpreter Lisp ing macem-macem platform, utawa digunakake kanggo ngasilake kode mesin kanggo arsitektur hardware sing saiki digunakake.
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION