[Powered by Google Translate] روب BOWDEN: چلو، compilers کے بارے میں بات کرتے ہیں.
اس مرحلے تک، آپ صرف آپ کے منبع کوڈ ہے ٹائپ میں
کچھ فائلیں، انہیں یہ بڑا بلیک باکس یہ ہے کہ کے ذریعے بھیجا
بجنا، اور اپنے executable فائل ہے جو کرتا ہے آتا ہے
بالکل وہی جو آپ کو آپ کے منبع کوڈ میں لکھا ہے.
ہو گیا ہے کے طور پر جادو کے طور پر، ہم نے ایک بہت قریب لے جا رہے ہیں
اصل میں کیا ہو رہا ہے تلاش کریں
جب ہم ایک فائل مرتب.
تو یہ کیا کچھ مرتب کرنے کا مطلب ہوتا ہے؟
>> ٹھیک ہے، سب سے زیادہ عام معنوں میں، یہ صرف کا مطلب
تبدیل کوڈ میں سے ایک میں وزٹرز کا ریکارڈ رکھا جائے گا
دوسرے زبان پروگرامنگ.
لیکن عام طور پر جب لوگ کہتے ہیں کہ وہ کچھ مرتب، وہ
مطلب ہے کہ وہ یہ ایک اعلی درجے کی پروگرامنگ سے لے جا رہے ہیں
ایک نچلے درجے کے پروگرامنگ زبان زبان.
یہ بہت ساپیکش شرائط کی طرح لگ سکتا ہے.
مثال کے طور پر، آپ سی کے شاید ایک اعلی کے طور پر نہیں کیا سوچتے ہیں
درجے کی پروگرامنگ زبان ہے، لیکن آپ نے اسے مرتب کرتے ہیں.
لیکن یہ تمام رشتہ دار ہے.
ہم کے طور پر نظر آئے گا، اسمبلی کا کوڈ اور آخر میں مشین
کوڈ ہے کہ ہم نیچے مرتب undeniably کم سطح ہے
C. سے
اگرچہ ہم بجنا آج کے مظاہرے میں استعمال کرتے ہوئے جائے گی،
یہاں خیالات کے بہت سے دیگر compilers کو لے.
>> بجنا کے لیے، مجموعی طور پر میں چار اہم مراحل ہیں
تالیف.
دو، یہ ایک پریپروسیسر کی طرف سے کیا preprocessing ہیں
سنکلک کی طرف سے کیا تالیف، تین تین، جمع
کوڈانترک کی طرف سے کیا، اور چار،
منسلک linker کی طرف سے کیا ہے.
یہ بردوست کیا جا سکتا ہے کہ مجموعی طور پر کی substeps میں سے ایک
بجنا compilers سنکلک کہا جاتا ہے، لیکن
ہم اس سے ملے گی.
ہماری مثال کے طور پر ہم ایک سادہ ہیلو دنیا پروگرام کا استعمال کرتے ہوئے کی جائے گی
اس ویڈیو کے دوران.
چلو ایک نظر ڈالیں.
>> اس سلسلے میں پہلے قدم کے preprocessing ہے.
پریپروسیسر کیا کرتا ہے؟
بہت ہر C پروگرام میں تم نے کبھی پڑھا ہے یا تحریری،
آپ کوڈ کی لائنیں جو ایک ہیش سے شروع استعمال کیا جاتا ہے.
میں اسے ہیش فون، لیکن تم نے اسے پونڈ تعداد بھی فون کر سکتے ہیں کریں گے
سائن ان کریں، یا تیز.
ایسے کسی بھی لائن میں ایک پریپروسیسر ہدایت کی ہے.
آپ نے شاید دیکھا ہے # اور اس سے پہلے # وضاحت شامل ہے، لیکن اس
کئی ہے کہ پریپروسیسر کو تسلیم کر رہے ہیں.
# ہماری ہیلو دنیا کی مثال کے طور پر کی وضاحت میں شامل ہے.
اب ہم اس فائل پر صرف پریپروسیسر چلائیں.
clage E-پرچم کو منظور کرتے ہوئے، آپ کو اسے چلانے کے لئے ہدایت کر رہے ہیں
صرف پریپروسیسر.
چلو دیکھتے ہیں کیا ہوتا ہے.
ایسا لگتا ہے کی طرح بجنا سب کچھ spits
کمانڈ لائن پر.
تاکہ نامی ایک نئی فائل میں اس کی پیداوار کا سب کو بچانے کے لئے
hello2.c، ہم> ہمارے حکم hello2.c ملحق کریں گے.
اب ہمارے preprocessed فائل میں ایک نظر ڈالیں.
>> واہ، ہمارے مختصر چھوٹا سا پروگرام کے ساتھ کیا ہوا؟
اگر ہم تمام طرح اس فائل کے سب سے نیچے دیئے جاتے ہیں، ہم دیکھیں گے
کوڈ ہے کہ ہم اصل میں لکھا میں سے کچھ.
یاد رکھیں کہ # وضاحت کی گئی ہے اور کے نام کے تمام مثالوں
بالکل وہی جو ہم میں وضاحت کے ساتھ تبدیل کر دیا گیا
# لائن کی وضاحت.
تو کیا ان تمام typedefs اور تقریب کا اعلان کیا ہے
فائل کے سب سے اوپر دیئے گئے؟
یاد رکھیں کہ # وضاحت صرف پریپروسیسر نہیں تھا
ہدایت ہے کہ ہم مخصوص ہے.
ہم نے # stdio.h شامل ہے.
تو پاگل لائنوں کی تمام اصل میں صرف stdio.h کاپی
اور اس فائل کے سب سے اوپر میں پیسٹ.
یہی وجہ ہے کہ ہیڈر فائلوں کو جشن کے لئے بہت مفید ہیں
کا اعلان کیا.
اور پیسٹ کرنے کی تقریب کے تمام کاپی کی ضرورت کے بجائے
کا اعلان کیا آپ کو آپ کی فائل کے سب سے اوپر دیئے گئے استعمال کرنے کا ارادہ رکھتے ہیں،
پریپروسیسر کو کاپی کریں اور پیسٹ کریں ان ہیڈر سے
آپ کے لئے دائر.
>> اب جب کہ ہم کی preprocessing کیا کر رہے ہیں، ہم پر منتقل
تالیف.
وجہ ہے ہم اس مرحلے کی تالیف کہتے ہیں کیونکہ یہ
قدم جہاں بجنا اصل میں اس C سے انتخاب
اسمبلی کا کوڈ
کے لئے بجنا ایک فائل اسمبلی مرتب، لیکن
کوئی مزید جاری، اسے منظور S پرچم
کمانڈ لائن پر.
چلو اسمبلی پر ایک نظر ڈالیں
فائل ہے کہ outputted کیا گیا تھا.
یہ بہت مختلف قسم کی زبان کی طرح لگ رہا ہے.
اسمبلی کوڈ بہت ہی خاص پروسیسر ہے.
اس صورت میں، کے بعد سے CS50 آلے پر چل رہا ہے
مجازی x86 پروسیسر، یہ x86 اسمبلی کوڈ آن ہے.
اسمبلی کے کوڈ میں بہت کم لوگ ان دنوں براہ راست لکھتے ہیں،
لیکن ہر C پروگرام آپ نے کبھی لکھنے نیچے تبدیل ہو جاتا ہے
اسمبلی میں.
ایک بار پھر، ہم اس اسمبلی میں C مرتب قدم
کے بعد ہم نے ایک اعلی سطح سے کم سطح پر جا رہے ہیں
زبان پروگرامنگ.
>> C سے اسمبلی نچلے درجے کا کیا کرتا ہے؟
ٹھیک ہے، اسمبلی میں، ہم ہم کیا کر سکتے ہیں میں بہت محدود ہیں.
نہیں اگر، جبکہ، کے لئے، کسی بھی قسم کی loops یا ہیں.
لیکن آپ ایک ہی چیزوں کو پورا کر سکتے ہیں کہ یہ کنٹرول
ڈھانچے محدود آپریشن کا استعمال کرتے ہوئے پیش کرتے ہیں کہ
اسمبلی فراہم کرتا ہے.
لیکن دیکھتے ہیں کس طرح کم سطح اسمبلی واقعی ہے، چلو چلتے ہیں
ہمارے تالیف میں مزید ایک قدم، جمع.
یہ کوڈانترک اسمبلی کے کوڈ کو تبدیل کرنے کی کام ہے
چیز یا مشین کوڈ میں.
یاد رکھیں کہ کوڈانترک پیداوار اسمبلی نہیں ہوتا ہے؛
بلکہ یہ اسمبلی اور نتائج مشین کوڈ میں لیتا ہے.
مشین کوڈ اصل 1 اور 0 ہے کہ ایک CPU ہے
سمجھنے کی کوشش کرتا اگرچہ ہم اب بھی کام کے ایک چھوٹے سا بچا ہے
اس سے پہلے کہ ہم ہمارے پروگرام چلا سکتے ہیں.
چلو گزرنے کی طرف سے ہماری اسمبلی کا کوڈ جمع
بجنا سی پرچم.
اب دیکھتے ہیں جمع فائل میں کیا ہے.
>> ٹھیک ہے، وہ ہماری مدد نہیں کرتا بہت زیادہ ہے.
یاد رکھیں کہ مشین کوڈ ہیں اور zeros ہے
آپ کے کمپیوٹر کو سمجھ سکتا ہوں.
اس کا مطلب یہ نہیں ہم کو سمجھنے کے لئے یہ آسان ہے.
تو کس طرح کم سطح اسمبلی ہے؟
اعتراض کوڈ یہ تقریبا ایک جیسی ہے.
اسمبلی سے اعتراض کے کوڈ میں جانا ایک بہت زیادہ ہے
ایک تبدیلی سے ترجمہ، جس کی وجہ سے ہے
ایک کوڈانترک پر غور نہیں کر سکتے ہیں
کوئی اصل مرتب کرتے ہیں.
اصل میں، یہ بہت آسان ہے دستی طور سے ترجمہ
مشین کوڈ اسمبلی
کی تلاش میں ایک مرکزی تقریب کے لئے اسمبلی میں کہ پہلی سطر
شش اعشاری 0x55 کے مطابق ہوتا ہے.
بائنری میں یہ 1010101 ہے.
دوسری لائن شش اعشاری 0x895 مطابق ہوتا ہے.
اور اگلے 0x56.
ایک نسبتا آسان ٹیبل کو دیکھتے ہوئے آپ کو ترجمہ کر سکتے ہیں
کوڈ میں اسمبلی ہے کہ مشینیں بھی سمجھ سکتے ہیں.
>> تو ایک باقی میں قدم ہے
تالیف ہے، جس سے منسلک ہے.
ربط اعتراض فائلوں کی ایک بڑی فائل میں ایک گروپ یکجا
کہ آپ اصل میں پھانسی کر سکتے ہیں.
ربط بہت انحصار نظام ہے.
تو بجنا اعتراض کرنے سے منسلک کرنے کے لئے کا سب سے آسان طریقہ
ایک دوسرے کے ساتھ فائلوں کو فائلوں میں سے سب پر بجنا پر کال کرنا ہے
آپ کو ایک دوسرے کے ساتھ منسلک کرنا چاہتے ہیں.
اگر آپ کو اے فائلوں کی وضاحت کریں.، تو اس reprocess پر کرنے کی ضرورت نہیں کرے گا،
مرتب کریں، اور آپ کے منبع کوڈ کے تمام جمع.
ہماری فائل میں ریاضی تقریب پھینک دو، تو ہم
اندر سے منسلک کرنے کے لئے کچھ
اب یہ اعتراض کوڈ واپس مرتب نیچے
بجنا کو اس پر کال کریں.
افوہ.
چونکہ ہم ایک ریاضی کی تقریب بھی شامل ہے، ہم میں سے منسلک کرنے کی ضرورت ہے
ریاضی لائبریری کے ساتھ ایل ایم.
>> . اگر ہم ایک ساتھ کی چڑھانے سے منسلک کرنے چاہتے تھے اے فائلوں کہ ہم
اپنے خود لکھا ہے، ہم ان سب کو صرف وضاحت چاہتے ہیں
کمانڈ لائن.
پابندی ہے کہ ان فائلوں کی صرف ایک ضروری ہے
اصل میں ایک اہم تقریب کی وضاحت، یا کوئی اور
نتیجے میں کارکردگی میں کہاں سے شروع پتہ نہیں کریں گے
اپنا کوڈ چلانے.
میں دیئے گئے لنک کے لئے ایک فائل کی وضاحت کے درمیان کیا فرق ہے
L-اور صرف ایک فائل کو براہ راست کی وضاحت؟
کچھ بھی نہیں.
صرف یہ ہے کہ بجنا بالکل وہی جو فائل کو جاننا ہوتا ہے
کچھ طرح ایل ایم سے رجوع کرنا ہوتا ہے.
اگر آپ اس فائل خود جانتے تھے، کیا آپ اس کی وضاحت کر سکتا ہوں
واضح طور پر.
بس یاد رکھیں کہ تمام L-پرچم آخر میں آنے کی ہے
اپنے کلائنٹ کی درخواست کی.
>> اور یہ سب اس کے لئے ہے ہے.
جب آپ کچھ فائلیں بجنا چلانے ہے، یہ کیا ہے
اصل میں کر رہی ہیں.
میرا نام Rob Bowden ہے، اور اس CS50 ہے.