JavaRush /جاوا بلاگ /Random-SD /مشين ڪوڊ ۽ بائيٽ ڪوڊ: توهان جو پروگرام ڪهڙي ٻولي ڳالهائين...

مشين ڪوڊ ۽ بائيٽ ڪوڊ: توهان جو پروگرام ڪهڙي ٻولي ڳالهائيندو آهي؟

گروپ ۾ شايع ٿيل
اهي جيڪي صرف جاوا سان واقف ٿيڻ شروع ڪري رهيا آهن گهڻو ڪري مشين ڪوڊ ۽ بائيٽ ڪوڊ جي تصورن بابت مونجهارو آهن . اهي ڇا آهن؟ اختلاف ڇا آهن؟ مختصر نوٽ ۾، اسان انهن جي خاصيتن کي آسان ۽ واضح طور تي بيان ڪرڻ جي ڪوشش ڪنداسين ته جيئن هن مسئلي کي هڪ ڀيرو ۽ سڀني لاء بند ڪيو وڃي.
مشين ڪوڊ ۽ بائيٽ ڪوڊ: توهان جو پروگرام ڪهڙي ٻولي ڳالهائيندو آهي؟  - 1

مشين ڪوڊ

پروسيسر ، جوهر ۾، هڪ تمام پيچيده ۽ ترقي يافته ڳڻپيوڪر آهي. ان ۾ ڪيترائي ميموري جڳهون آهن (جنهن کي رجسٽر سڏيو ويندو آهي) تي ۽ انهن جي وچ ۾ مختلف رياضياتي ۽ بائيٽ آپريشن ڪيا ويندا آهن. مشين ڪوڊ خاص طور تي عملن جي تسلسل ۽ شامل ڪيل ڊيٽا جي سيٽ جو تفصيل آهي. حقيقت ۾، اها واحد ٻولي آهي جيڪا توهان جي ڪمپيوٽر جو پروسيسر سمجهي ٿي.

پيدائشي عدم مطابقت

ساڳئي وقت، نه سڀئي پروسيسر "ڳالهائي" ساڳي ٻولي. فرق نه رڳو CISC ۽ RISC فن تعمير جي وچ ۾ آهن ، پر انهن ”ڪيمپن“ جي اندر پڻ.

CISC (ڪمپليڪس انسٽرڪشن سيٽ ڪمپيوٽنگ) هڪ پروسيسر ڊيزائن جو تصور آهي جنهن کي خاصيتن جي هيٺين سيٽ سان منسوب ڪيو ويو آهي:

  • ڪيترائي حڪم، ڊيگهه ۾ مختلف؛
  • ڪيترن ئي ايڊريسنگ طريقن؛
  • پيچيده هدايتون ڪوڊنگ.
RISC (گھٽايل هدايتون سيٽ ڪمپيوٽنگ) - ھڪڙو پروسيسر ھڪڙو گھٽ ھدايت واري سيٽ سان. حڪم ساڳي شڪل جا آهن، مختصر، سادي ڪوڊنگ سان.
پروسيسرز جي نئين نسلن کي هدايتن جا اضافي سيٽ متعارف ڪرايو جيڪي صرف پراڻي نسل جي ماڊل لاء اڻڄاتل آهن. انهي جي ڪري، هڪ فن تعمير (يا پروسيسرز جي هڪ نسل) لاء گڏ ڪيل پروگرام ٻين هارڊويئر تي هلائي نٿا سگهن. هي سڀ اسان کي پروگرامن کي ٻيهر گڏ ڪرڻ لاءِ مجبور ڪري ٿو انهي کي يقيني بڻائڻ لاءِ اهي ٻين ڪمپيوٽرن تي ڪم ڪن ٿا. تنهن هوندي، توهان کي نه رڳو پروسيسرز جي ڪري، پر پڻ پروگرامن ۽ آپريٽنگ سسٽم جي وچ ۾ اختلافن جي ڪري ٻيهر گڏ ڪرڻو پوندو. اھو انھن جي ڪري آھي جو لينڪس تحت ”ونڊوز“ پروگرام ۽ ونڊوز ھيٺ ”لينڪس“ پروگرام هلائڻ ناممڪن آھي.

بائيٽ ڪوڊ

بائيٽ ڪوڊ ڪيترن ئي طريقن سان مشين ڪوڊ سان ملندڙ جلندڙ آهي، صرف اهو استعمال ڪري ٿو هدايتن جو هڪ سيٽ حقيقي پروسيسر کان نه، پر مجازي هڪ کان. ان کان علاوه، ان ۾ سيڪشن شامل ٿي سگھي ٿو JIT ڪمپيلر جي استعمال تي مرکوز ، جيڪو حقيقي پروسيسر لاءِ حڪمن جي عمل کي بھتر ڪري ٿو جنھن تي پروگرام ھلي رھيو آھي.
جي آءِ ٽي ڪمپليشن (جسٽ-ان-ٽائم ڪمپليشن، آن دي فلائي ڪمپليشن) يا متحرڪ ڪمپليشن (متحرڪ ترجمو) سافٽ ويئر سسٽم جي ڪارڪردگي کي وڌائڻ لاءِ هڪ ٽيڪنالاجي آهي جيڪا بائيٽ ڪوڊ کي مشين ڪوڊ ۾ يا ڪنهن ٻئي فارميٽ ۾ سڌي طرح گڏ ڪري بائيٽ ڪوڊ استعمال ڪندي آهي. پروگرام هلي رهيو آهي. "سرڪاري طور تي" جاوا ۾ نسخو 9 تائين صرف هڪ JIT مرتب ڪندڙ هو. جاوا 9 ۾، هڪ ٻيو مرتب ڪندڙ ظاهر ٿيو آهي، ۽ اهو وقت کان اڳ گڏ ڪري ٿو (AoT). هي خصوصيت مجازي مشين تي هلڻ کان اڳ جاوا ڪلاسز کي مقامي ڪوڊ ۾ مرتب ڪرڻ جي اجازت ڏئي ٿي. هي مضمون ننڍي ۽ وڏي ايپليڪيشنن لاءِ شروعاتي وقت کي بهتر بڻائڻ لاءِ ٺاهيو ويو آهي، ان سان گڏ چوٽي جي ڪارڪردگي تي محدود اثر.
CISC پروسيسرز لاءِ ، ڪجھ هدايتون گڏ ڪري سگھجن ٿيون وڌيڪ پيچيده ڍانچين ۾ پروسيسر جي مدد سان، ۽ RISC لاءِ ، ان جي برعڪس، انھن کي ٽوڙي سگھجي ٿو ھدايتن جي سادي ترتيبن ۾.

پڻ هڪ مجازي او ايس

بهرحال، بائيٽ ڪوڊ نه رڳو پروسيسر جي هدايتن تي مشتمل آهي. اهو پڻ هڪ مجازي آپريٽنگ سسٽم سان رابطي لاء منطق تي مشتمل آهي، جيڪو ڪمپيوٽر تي استعمال ٿيل آپريٽنگ سسٽم کان ايپليڪيشن جي رويي کي آزاد ڪري ٿو. اهو واضح طور تي JVM ۾ ڏسڻ ۾ اچي ٿو ، جتي سسٽم ڪالن سان ڪم ۽ GUI اڪثر ڪري OS کان آزاد آهن جنهن تي پروگرام هلندي آهي. وڏي ۽ وڏي، JVM هڪ پروگرام جي عمل جي شروعات کي نقل ڪري ٿو، حل جي برعڪس Virtual Box ، جيڪو صرف هڪ ورچوئل سسٽم/هارڊويئر ٺاهي ٿو.

ڇا JVM صرف هن وانگر آهي؟

يقيناً نه. ساڳي ئي DotNet CLI پڻ هڪ ورچوئل مشين آهي، جيڪا اڪثر ونڊوز هلائيندڙ ڪمپيوٽرن تي x86 مطابقت رکندڙ پروسيسرز سان استعمال ٿيندي آهي. جڏهن ته، ٻين سسٽم لاءِ ان جو نفاذ موجود آهي: ان لاءِ ايپليڪيشنون لازمي طور تي Windows RT تي هلڻ گهرجن ARM (RISC) مطابقت رکندڙ پروسيسرز تي ، يا توهان انهن کي مونو ماحول ۾ Linux/OSX تي هلائي سگهو ٿا ، جيڪا ٽئين پارٽي آهي (۽ تنهن ڪري. مڪمل طور تي مطابقت نه آهي) انهن پليٽ فارمن لاءِ DotNet جو نفاذ . تنهن ڪري هي پليٽ فارم، JVM وانگر ، مختلف پروسيسرز ۽ مختلف OS تي هلندو آهي. اهڙا ڪيترائي ٻيا حل آهن (ٻئي پراڻا ۽ نوان): LLVM ، Flash SWF ، ۽ ٻيا. ڪجھ پروگرامنگ ٻولين وٽ پنھنجيون ورچوئل مشينون آھن. مثال طور، CPython PY ذريعن کي PYC فائلن ۾ گڏ ڪري ٿو - مرتب ڪيل بائيٽ ڪوڊ جيڪو PVM ۾ هلائڻ لاءِ تيار ڪيو ويو آهي . يا اتي ھڪڙو پراڻو مثال آھي - Lisp کي FASL (فاسٽ لوڊ) فائلن ۾ مرتب ڪري سگھجي ٿو . حقيقت ۾، اهي هڪ AST وڻ تي مشتمل آهن جنريٽر طرفان ماخذ ڪوڊ مان ٺهيل. اهي فائلون مختلف پليٽ فارمن تي Lisp مترجم طرفان پڙهي ۽ عمل ڪري سگھجن ٿيون ، يا هن وقت استعمال ٿيل هارڊويئر آرڪيٽيڪچر لاءِ مشين ڪوڊ ٺاهڻ لاءِ استعمال ٿين ٿيون.
تبصرا
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION