JavaRush /Блоги Java /Random-TG /Рамзи мошин ва коди байт: барномаи шумо бо кадом забон ҳа...

Рамзи мошин ва коди байт: барномаи шумо бо кадом забон ҳарф мезанад?

Дар гурӯҳ нашр шудааст
Онҳое, ки нав бо Java шинос мешаванд, аксар вақт дар бораи мафҳумҳои codeи мошин ва codeи byte ошуфта мешаванд . Онҳо чистанд? Фарқиятҳо чист? Дар як ёддошти кӯтоҳ, мо кӯшиш мекунем, ки хусусиятҳои онҳоро то ҳадди имкон содда ва возеҳ тавсиф кунем, то ин масъаларо як бор ва барои ҳама қатъ кунем.
Рамзи мошин ва codeи byte: барномаи шумо бо кадом забон ҳарф мезанад?  - 1

Рамзи мошин

Протсессор аслан як ҳисобкунаки хеле мураккаб ва пешрафта аст. Он дорои маконҳои зиёди хотира (регистрҳо ном дорад) ва дар байни онҳо амалҳои гуногуни математикӣ ва byteӣ иҷро карда мешаванд. Рамзи мошин маҳз тавсифи пайдарпайии амалҳо ва маҷмӯи маълумоти ҷалбшуда мебошад. Дар асл, ин ягона забонест, ки протсессори компютери шумо мефаҳмад.

Носозгории модарзодӣ

Дар баробари ин, на ҳама протсессорҳо бо як забон "гуфтаанд". На танҳо байни меъмории CISC ва RISC , балки дар дохor ин "лагерҳо" низ фарқиятҳо мавҷуданд .

CISC (Complex Instruction Set Computing) консепсияи тарроҳии протсессор аст, ки бо маҷмӯи хосиятҳои зерин тавсиф мешавад:

  • бисёр фармонҳо, ки дарозии онҳо гуногунанд;
  • бисёр усулҳои addressтсия;
  • рамзгузории дастури мураккаб.
RISC (Reduced Instruction Set Computing Computing) - протсессор бо маҷмӯи дастурҳои камшуда. Фармонҳо як формат, кӯтоҳ, бо рамзгузории оддӣ мебошанд.
Наслҳои нави протсессорҳо маҷмӯи иловагии дастурҳоро ҷорӣ мекунанд, ки ба моделҳои насли кӯҳна номаълуманд. Аз ин сабаб, барномаҳое, ки барои як меъморӣ (ё як насли протсессорҳо) тартиб дода шудаанд, наметавонанд дар дигар сахтафзор кор кунанд. Ҳамаи ин моро маҷбур мекунад, ки барномаҳоро аз нав тартиб диҳем, то онҳо дар дигар компютерҳо кор кунанд. Бо вуҷуди ин, шумо бояд на танҳо аз сабаби протсессорҳо, балки аз сабаби тафовут дар таъсири мутақобилаи барномаҳо ва системаи амалиётӣ дубора тартиб диҳед. Маҳз аз ҳамин сабаб аст, ки дар зери Linux барномаи «Windows» ва дар зери Windows барномаи «Linux»-ро иҷро кардан ғайриимкон аст.

Байтcode

Байтcode аз бисёр ҷиҳат ба рамзи мошин шабоҳат дорад, танҳо он маҷмӯи дастурҳоро на аз протсессори воқеӣ, балки аз виртуалӣ истифода мебарад. Ғайр аз он, он метавонад бахшҳоеро дар бар гирад, ки ба истифодаи компилятори JIT нигаронида шудаанд , ки иҷрои фармонҳоро барои протсессори воқеие, ки барнома дар он кор мекунад, оптимизатсия мекунад.
Компилясияи JIT (компиляцияи дақиқ дар вақт, компилясияи фаврӣ) ё компиляцияи динамикӣ (тарҷумаи динамикӣ) технологияест барои баланд бардоштани самаранокии системаҳои нармафзор, ки bytecodeро тавассути тартиб додани bytecode ба codeи мошин ё ба формати дигар мустақиман ҳангоми коркард истифода мебаранд. барнома кор мекунад. "Расман" дар Java то versionи 9 танҳо як компилятори JIT мавҷуд буд. Дар Java 9, компилятори дигар пайдо шуд ва он пеш аз вақт тартиб медиҳад (AoT). Ин хусусият имкон медиҳад, ки синфҳои Java пеш аз кор дар мошини виртуалӣ ба codeи аслӣ тартиб дода шаванд. Ин хусусият барои беҳтар кардани вақти оғозёбӣ барои барномаҳои хурд ва калон тарҳрезӣ шудааст, ки бо таъсири маҳдуд ба иҷрои авҷи аъло.
Барои протсессорҳои CISC , баъзе дастурҳоро метавон ба сохторҳои мураккабтаре, ки аз ҷониби протсессори дастгирӣ дастгирӣ карда мешавад, муттаҳид кардан мумкин аст ва барои RISC , баръакс, онҳоро ба пайдарпайии оддии дастурҳо тақсим кардан мумкин аст.

Инчунин як OS виртуалӣ

Аммо, рамзи byte на танҳо дастурҳои протсессорро дар бар мегирад. Он инчунин дорои мантиқи ҳамкорӣ бо системаи оператсионии виртуалӣ мебошад, ки рафтори барномаро аз системаи амалиётии дар компютер истифодашаванда новобаста аз он месозад. Ин дар JVM ба таври равшан намоён аст , ки дар он кор бо зангҳои системавӣ ва GUI аксар вақт аз OS, ки барнома дар он кор мекунад, новобаста аст. Умуман, JVM ба ифтитоҳи як раванди барнома тақлид мекунад, бар хилофи қарорҳо ба монанди Virtual Box , ки танҳо як системаи виртуалӣ/сахтафзорро эҷод мекунанд.

Оё JVM ягона чунин аст?

Албатта не. Ҳамон DotNet CLI низ як мошини маҷозӣ аст, ки аксар вақт дар компютерҳое истифода мешавад, ки Windows бо протсессори x86 мувофиқанд. Бо вуҷуди ин, татбиқи он барои дигар системаҳо вуҷуд дорад: барномаҳо барои он бояд дар Windows RT , ки бо протсессори мувофиқи ARM (RISC) кор мекунанд ё шумо метавонед онҳоро дар Linux/OSX дар муҳити Mono иҷро кунед , ки тарафи сеюм аст (ва аз ин рӯ,). пурра мувофиқ нест) татбиқи DotNet барои ин платформаҳо. Ҳамин тавр, ин платформа, ба монанди JVM , дар протсессори гуногун ва OS-ҳои гуногун кор мекунад. Қарорҳои шабеҳи зиёде мавҷуданд (ҳам кӯҳна ва ҳам нав): LLVM , Flash SWF ва дигарон. Баъзе забонҳои барномасозӣ мошинҳои виртуалии худро доранд. Масалан, CPython сарчашмаҳои PY-ро ба файлҳои PYC тартиб медиҳад - рамзи byteи тартибдодашуда, ки барои кор дар PVM омода шудааст . Ё мисоли хеле кӯҳна вуҷуд дорад - Lisp метавонад ба файлҳои FASL (Fast Load) тартиб дода шавад. Дар асл, онҳо дорои дарахти AST аз ҷониби генератор аз рамзи сарчашма сохта шудаанд. Ин файлҳоро тарҷумони Lisp дар платформаҳои гуногун хондан ва иҷро кардан мумкин аст ё барои тавлиди codeи мошин барои меъмории сахтафзори ҳозира истифодашаванда истифода мешавад.
Шарҳҳо
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION