Hack computer
ہیک کمپیوٹر ایک نظریاتی کمپیوٹر ڈیزائن ہے جسے نوم نسان اور شمون شاکن نے تخلیق کیا ہے اور ان کی کتاب، دی ایلیمنٹس آف کمپیوٹنگ سسٹمز: بلڈنگ اے ماڈرن کمپیوٹر فرام فرسٹ پرنسپلز میں بیان کیا گیا ہے۔ "ماڈرن" کی اصطلاح استعمال کرتے ہوئے، مصنفین ایک ڈیجیٹل، بائنری مشین کا حوالہ دیتے ہیں جو وان نیومن فن تعمیر کے ماڈل کے مطابق ہے۔ ہیک کمپیوٹر کا مقصد کمپیوٹر تنظیم اور فن تعمیر میں ایک بنیادی، لیکن جامع کورس کے حصے کے طور پر ہارڈ ویئر سمیلیٹر ایپلی کیشن میں عملی طور پر ورچوئل تعمیر کرنا ہے۔ ایسا ہی ایک کورس، جسے مصنفین نے تخلیق کیا ہے اور دو حصوں میں تقسیم کیا گیا ہے، ایک بڑے پیمانے پر کھلے آن لائن کورس (ایم او او سی) کے طور پر مفت دستیاب ہے جس کا نام ہے بلڈ اے ماڈرن کمپیوٹر فرام فرسٹ پرنسپلز: فرام نند ٹو ٹیٹرس۔ کورس میں شامل بارہ پروجیکٹوں میں، سیکھنے والے دو ان پٹ نند گیٹ سے شروع کرتے ہیں اور ایک مکمل طور پر آپریشنل ورچوئل کمپیوٹر کے ساتھ ختم ہوتے ہیں، جس میں ہارڈ ویئر (میموری اور سی پی یو) اور سافٹ ویئر (اسمبلر، وی ایم، جاوا جیسی پروگرامنگ زبان، اور او ایس) دونوں شامل ہیں۔ کمپیوٹر ہارڈ ویئر کے ابتدائی نفاذ کے لیے استعمال ہونے والے ہارڈ ویئر سمیلیٹر کے علاوہ، ایک مکمل ہیک کمپیوٹر ایمولیٹر پروگرام اور اسمبلر جو کتاب اور آن لائن کورس میں بیان کردہ منصوبوں کی حمایت کرتا ہے، مصنف کی ویب سائٹ پر بھی دستیاب ہے۔ ہارڈ ویئر فن تعمیر ہیک کمپیوٹر ہارڈ ویئر تین بنیادی عناصر پر مشتمل ہوتا ہے جیسا کہ بلاک خاکہ میں دکھایا گیا ہے۔ دو الگ الگ 16 بٹ میموری یونٹ اور ایک سنٹرل پروسیسنگ یونٹ (سی پی یو) ہیں۔ چونکہ ڈیٹا کو کمپیوٹر کے ذریعے 16 بٹ الفاظ میں منتقل اور پروسیس کیا جاتا ہے، اس لیے ہیک کمپیوٹر کو 16 بٹ فن تعمیر کے طور پر درجہ بند کیا جاتا ہے۔ انسٹرکشن میموری، جسے کمپیوٹر کے نقطہ نظر سے صرف پڑھنے والی میموری کے طور پر لاگو کیا جاتا ہے اور نامزد کردہ روم، عمل درآمد کے لیے جمع شدہ بائنری پروگرام کوڈ رکھتا ہے۔ بے ترتیب رسائی میموری، جسے رام کہا جاتا ہے، ایک ایگزیکٹو پروگرام کے ڈیٹا کے لیے اسٹوریج فراہم کرتا ہے اور کمپیوٹر کے میموری میپڈ I/O میکانزم کے لیے خدمات اور اسٹوریج کے علاقے فراہم کرتا ہے۔ ڈیٹا پروسیسنگ اور پروگرام کنٹرول مینجمنٹ سی پی یو کے ذریعے فراہم کیے جاتے ہیں۔ تینوں یونٹس متوازی بسوں کے ذریعے جڑے ہوئے ہیں۔ ایڈریس بسیں (15 بٹ) کے ساتھ ساتھ روم اور رام یونٹس کے لیے ڈیٹا اور انسٹرکشن بسیں (16 بٹ) مکمل طور پر آزاد ہیں۔ لہذا، ہیک ڈیزائن میموری یونٹس اور سی پی یو کے درمیان بس مواصلات کے حوالے سے ہارورڈ فن تعمیر ماڈل کی پیروی کرتا ہے۔ تمام میموری صرف لفظ ایڈریس کے قابل ہے۔ صرف پڑھنے کے لیے میموری (ROM) ہیک کمپیوٹر کے ROM ماڈیول کو انفرادی طور پر ایڈریس ایبل، ترتیب وار، 16 بٹ میموری رجسٹروں کی لکیری صف کے طور پر پیش کیا جاتا ہے۔ پتے 0 (0x0000) سے شروع ہوتے ہیں۔ چونکہ میموری عناصر ترتیب وار آلات ہیں، اس لیے ایک سسٹم کلاک سگنل تخروپن ایپلی کیشن اور کمپیوٹر ایمولیٹر ایپلی کیشن کے ذریعے فراہم کیا جاتا ہے۔ روم ایڈریس بس 15 بٹس چوڑی ہے، اس لیے پروگرام کی ہدایات کے لیے کل 32,768 انفرادی الفاظ دستیاب ہیں۔ فی الحال فعال لفظ کا پتہ سی پی یو کے اندر پروگرام کاؤنٹر رجسٹر کے ذریعے فراہم کیا جاتا ہے (نیچے دیکھیں)۔ کسی خاص گھڑی کے چکر میں انسٹرکشن ایڈریس بس پر رکھے گئے پتے سے شناخت شدہ روم میموری رجسٹر میں ویلیو اگلے چکر کے آغاز میں "موجودہ" ہدایت کے طور پر دستیاب ہے۔ کوئی انسٹرکشن رجسٹر نہیں ہے ؛ فی الحال فعال روم رجسٹر سے ہر سائیکل میں ہدایات کو ڈی کوڈ کیا جاتا ہے۔ رینڈم ایکسیس میموری (رام) اگرچہ رام ماڈیول کو انفرادی طور پر ایڈریس ایبل سیکوینشیل، ریڈ رائٹ، 16 بٹ میموری رجسٹروں کی مسلسل لکیری صف کے طور پر بھی دیکھا جاتا ہے، لیکن اسے ایڈریس رینج کے لحاظ سے فعال طور پر تین حصوں میں منظم کیا جاتا ہے۔ پتے 0 (0x000) سے 16383 (0x3FF) میں روایتی 16 بٹ، ریڈ رائٹ رجسٹر ہوتے ہیں اور یہ عام مقصد کے پروگرام ڈیٹا اسٹوریج کے طور پر استعمال ہوتے ہیں۔ پتے 16384 (0x4000) سے 24575 (0x5 ایف ایف ایف) پر رجسٹر بنیادی طور پر ڈیٹا رام کی طرح ہیں، لیکن انہیں بلٹ ان اسکرین I/O سب سسٹم کے استعمال کے لیے بھی نامزد کیا گیا ہے۔ اس رینج میں پتے پر لکھے گئے ڈیٹا کا کمپیوٹر کی ورچوئل 256 x 512 اسکرین پر آؤٹ پٹ پیدا کرنے کا ضمنی اثر ہوتا ہے (I/O دیکھیں)۔ اگر کسی پروگرام کو اسکرین آؤٹ پٹ کی ضرورت نہیں ہے، تو اس رینج میں رجسٹر عام پروگرام ڈیٹا کے لیے استعمال کیے جا سکتے ہیں۔ رام ایڈریس کی جگہ میں حتمی پتہ، 24576 (0x6000) پر، ایک واحد لفظ رجسٹر پر مشتمل ہوتا ہے جس کی موجودہ قیمت ہیک ایمولیٹر پروگرام کی میزبانی کرنے والے کمپیوٹر سے منسلک کی بورڈ کے آؤٹ پٹ سے کنٹرول ہوتی ہے۔ یہ کی بورڈ میموری میپ رجسٹر صرف پڑھنے کے لیے ہے (I/O دیکھیں)۔ 32577 (0x6001) سے 32767 (0x7FF) کی حد میں ڈیٹا میموری پتے غلط ہیں۔ منتخب رام میموری رجسٹر کی ریاستی منتقلی کو بھی سسٹم کلاک سگنل کے ذریعے مربوط کیا جاتا ہے۔ سنٹرل پروسیسنگ یونٹ (سی پی یو) جیسا کہ ساتھ والے خاکے میں دکھایا گیا ہے، ہیک کمپیوٹر سنٹرل پروسیسنگ یونٹ (سی پی یو) اندرونی ساخت کے ساتھ ایک مربوط منطق یونٹ ہے۔ یہ سادہ، تجارتی طور پر دستیاب سی پی یو میں پائے جانے والے بہت سے افعال فراہم کرتا ہے۔ سی پی یو کا سب سے پیچیدہ عنصر ریاضی منطق یونٹ (اے ایل یو) ہے جو کمپیوٹر کی کمپیوٹیشنل فعالیت فراہم کرتا ہے۔ اے ایل یو ایک مشترکہ منطق آلہ ہے جس میں دو 16 بٹ ان پٹ آپریڈز اور ایک واحد 16 بٹ آؤٹ پٹ ہے۔ آپریڈز سے آؤٹ پٹ کے طور پر پیدا ہونے والی کمپیوٹیشن کی وضاحت اے ایل یو میں چھ آرڈرڈ، سنگل بٹ ان پٹ کے ایک سیٹ کے ذریعے کی جاتی ہے۔ اے ایل یو دو سنگل بٹ اسٹیٹس فلیگ بھی خارج کرتا ہے جو اس بات کی نشاندہی کرتا ہے کہ آیا کمپیوٹیشن کا نتیجہ صفر (زیڈ آر فلیگ) ہے یا منفی (این جی فلیگ)۔ سی پی یو میں دو 16 بٹ رجسٹر بھی ہوتے ہیں، جن پر ڈی اور اے کا لیبل ہوتا ہے۔ ڈی (ڈیٹا) رجسٹر ایک عام مقصد کا رجسٹر ہے جس کی موجودہ قیمت ہمیشہ اے ایل یو ایکس آپریینڈ فراہم کرتی ہے، حالانکہ کچھ ہدایات کے لیے اس کی قیمت کو نظر انداز کر دیا جاتا ہے۔ جب کہ اے (ایڈریس) رجسٹر اے ایل یو کو وائی آپریڈ کے طور پر اپنی موجودہ قیمت بھی فراہم کر سکتا ہے جب کسی ہدایت کے ذریعے اس کی ہدایت کی جاتی ہے، اس کی قیمت ڈیٹا میموری ایڈریسنگ کے لیے اور ہدایات کو برانچ کرنے کے لیے انسٹرکشن میموری میں ٹارگٹ ایڈریس کے طور پر بھی استعمال کی جا سکتی ہے۔ اس فنکشن کو آسان بنانے کے لیے، اے رجسٹر براہ راست ایک "سیڈو رجسٹر" سے وابستہ ہے جسے ایم کے طور پر نامزد کیا گیا ہے جو ہارڈ ویئر میں واضح طور پر لاگو نہیں ہوتا ہے۔ اس لیے یہ ایم رجسٹر رام میں موجود ویلیو کی نمائندگی کرتا ہے جس میں اے رجسٹر میں موجود موجودہ ویلیو کا پتہ ہوتا ہے۔ سی پی یو میں آخری اہم عنصر پروگرام کاؤنٹر (پی سی) رجسٹر ہے۔ پی سی ایک 16 بٹ بائنری کاؤنٹر ہے جس کے کم 15 بٹس پر عمل درآمد کے لیے اگلی ہدایت کی انسٹرکشن میموری میں ایڈریس کی وضاحت کرتے ہیں۔ جب تک کہ برانچنگ کی ہدایت کے ذریعہ دوسری صورت میں ہدایت نہ کی جائے، پی سی ہر گھڑی کے چکر کے اختتام پر اپنی قیمت میں اضافہ کرتا ہے۔ سی پی یو میں پی سی کو غیر ترتیب وار قدر پر ترتیب دے کر، پروگرام کے کنٹرول کے تحت، کمپیوٹر کی ہدایات پر عمل درآمد کی ترتیب کو تبدیل کرنے کی منطق بھی شامل ہے۔ پی سی ایک سنگل بٹ ری سیٹ ان پٹ بھی لاگو کرتا ہے جو پی سی ویلیو کو 0 (0x0000) پر شروع کرتا ہے جب اسے منطق 0 سے منطق 1 اور پیچھے سائیکل کیا جاتا ہے۔ بہت سے حقیقی سی پی یو ڈیزائنوں کے برعکس، سی پی یو بیرونی یا اندرونی رکاوٹوں کو نافذ کرنے یا فنکشن کالز کے لیے سپورٹ کے لیے کوئی قابل رسائی پروگرام ہارڈ ویئر میکانزم فراہم نہیں کیا گیا ہے۔ بیرونی ان پٹ اور آؤٹ پٹ (I/O) ہیک کمپیوٹر I/O کے لیے میموری میپ شدہ نقطہ نظر استعمال کرتا ہے۔ بٹ میپڈ، بلیک اینڈ وائٹ آؤٹ پٹ کو ورچوئل 256 x 512 اسکرین پر ڈیٹا میموری کے مقامات 16384 (0x4000) سے 24575 (0x5FF) تک مطلوبہ آؤٹ پٹ کا بٹ میپ لکھ کر متاثر کیا جاتا ہے۔ اس ایڈریس رینج میں ڈیٹا ورڈز کو بٹس کی لکیری صف کے طور پر دیکھا جاتا ہے جس میں ہر بٹ ویلیو کمپیوٹر ایمولیٹر کی ورچوئل اسکرین پر ایک پکسل کی سیاہ/سفید حالت کی نمائندگی کرتی ہے۔ اسکرین رام سیگمنٹ کے پہلے میموری ایڈریس میں لفظ کا سب سے کم اہم حصہ اسکرین کے اوپری بائیں کونے میں پکسل کو سفید کرتا ہے اگر یہ 0 ہے اور اگر 1 ہے تو سیاہ ہوتا ہے۔ پہلے لفظ میں اگلا سب سے اہم بٹ دائیں طرف اگلے پکسل کو کنٹرول کرتا ہے، اور اسی طرح۔ پہلی 512 پکسل قطار کو اسکرین میموری کے پہلے 32 الفاظ سے بیان کرنے کے بعد، اگلی 32 الفاظ کے ساتھ دوسری قطار کے لیے نقشہ سازی اسی انداز میں جاری رکھی جاتی ہے۔ کمپیوٹر کا بیرونی منطق اسکرین رام میموری نقشے کے حصے کو پڑھتا ہے اور ورچوئل اسکرین کو اپ ڈیٹ کرتا ہے۔ اگر سی پی یو ایمولیٹر پروگرام کی میزبانی کرنے والے کمپیوٹر سے کی بورڈ منسلک ہے، تو ایمولیٹر رام ایڈریس 24576 (0x6000) پر کی بورڈ رجسٹر میں پروگرام پر عمل درآمد کے دوران دبے ہوئے کلید سے مطابقت رکھنے والا 16 بٹ بٹ اسکین کوڈ رکھتا ہے۔ اگر کوئی کلید دبا ہوا نہیں ہے، تو اس رجسٹر میں قدر 0 ہے۔ ایمولیٹر کی بورڈ کو فعال/غیر فعال کرنے کے لیے ٹگل بٹن فراہم کرتا ہے۔ انکوڈنگ اسکیم پرنٹ کے قابل حروف کے لیے ASCII انکوڈنگ کی قریب سے پیروی کرتی ہے۔ شفٹ کلید کے اثر کا عام طور پر احترام کیا جاتا ہے۔ کوڈز دیگر کلیدوں کے لیے بھی فراہم کیے جاتے ہیں جو اکثر معیاری پی سی کی بورڈ پر موجود ہوتی ہیں۔ مثال کے طور پر، ڈائرکشن کنٹرول کیز (،،،،،) اور ایف این کیز۔ آپریٹنگ سائیکل سی پی یو اور میموری یونٹس کا مرحلہ وار آپریشن ایک گھڑی کے ذریعے کنٹرول کیا جاتا ہے جو ہارڈ ویئر سمیلیٹر اور کمپیوٹر ایمولیٹر پروگرام دونوں میں بلٹ ان ہوتا ہے۔ گھڑی کے چکر کے آغاز میں پروگرام کاؤنٹر کی موجودہ قیمت سے خارج ہونے والے روم ایڈریس پر دی گئی ہدایات کو ڈی کوڈ کیا جاتا ہے۔ ہدایات میں بیان کردہ اے ایل یو آپریڈز کو جہاں ضرورت ہو وہاں مارشل کیا جاتا ہے۔ مخصوص حساب اے ایل یو کے ذریعے انجام دیا جاتا ہے اور مناسب اسٹیٹس فلیگ سیٹ کیے جاتے ہیں۔ حساب کا نتیجہ ہدایات کے مطابق محفوظ کیا جاتا ہے۔ آخر میں، پروگرام کاؤنٹر کو اگلی مطلوبہ پروگرام ہدایات کی قدر میں اپ ڈیٹ کیا جاتا ہے۔ اگر موجودہ ہدایت کے ذریعہ کوئی برانچنگ متعین نہیں کی گئی تھی، تو پی سی ویلیو کو صرف بڑھایا جاتا ہے۔ اگر برانچنگ کی وضاحت کی گئی تھی، تو پی سی کو (اے رجسٹر سے) اگلی ہدایت کے پتے کے ساتھ لوڈ کیا جاتا ہے جس پر عمل کیا جانا ہے۔ سائیکل پھر موجودہ پی سی ویلیو کا استعمال کرتے ہوئے دہرایا جاتا ہے۔ اس کے ہارورڈ میموری آرکیٹیکچر ماڈل کی وجہ سے، ہیک کمپیوٹر کو موجودہ ہدایات پر عمل درآمد کرنے اور اگلی ہدایات کو ایک واحد، دو حصوں والے گھڑی کے چکر میں "لانے" کے لیے ڈیزائن کیا گیا ہے۔ ہارڈ ویئر سمیلیٹر اور سی پی یو ایمولیٹر دونوں میں کنٹرول عنصر کے ذریعے گھڑی کی رفتار مختلف ہو سکتی ہے۔ تاہم منتخب رفتار سے آزاد، ہر ہدایت کو مکمل طور پر ایک سائیکل میں انجام دیا جاتا ہے۔ صارف کسی پروگرام کے ذریعے واحد قدم بھی اٹھا سکتا ہے۔ روم میں لدے ہوئے پروگرام کا نفاذ سی پی یو کے ری سیٹ بٹ کے ذریعے کنٹرول کیا جاتا ہے۔ اگر ری سیٹ بٹ کی قیمت 0 ہے، تو اس پر عمل درآمد اوپر بیان کردہ آپریٹنگ سائیکل کے مطابق ہوتا ہے۔ ری سیٹ بٹ کو 1 پر سیٹ کرنا پی سی کو 0 پر سیٹ کرتا ہے۔ ری سیٹ بٹ ویلیو کو واپس صفر پر سیٹ کرنے کے بعد پہلی ہدایت پر موجودہ پروگرام پر عمل درآمد شروع ہوتا ہے ؛ تاہم، ریم میں ری سیٹ پر کسی بھی پچھلی سرگرمی کی اقدار شامل ہوتی ہیں۔ کسی بھی قسم کی رکاوٹ کے لیے کوئی ہارڈ ویئر یا مشین لینگویج سپورٹ نہیں ہے۔ ROM میموری میں محفوظ کردہ ڈیٹا ٹائپ ویلیوز کو درست ہیک مشین زبان کی ہدایات کی نمائندگی کرنی چاہیے جیسا کہ انسٹرکشن سیٹ آرکیٹیکچر سیکشن میں بیان کیا گیا ہے۔ کوئی بھی 16 بٹ ویلیو رام میں محفوظ کی جا سکتی ہے۔ رام میں محفوظ کردہ ڈیٹا کی قسم کا اندازہ اس کے مقام اور/یا پروگرام کے اندر اس کے استعمال سے لگایا جاتا ہے۔ بنیادی ہارڈ ویئر سپورٹڈ ڈیٹا ٹائپ 16 بٹ سائنڈ انٹیجر ہے، جس کی نمائندگی 2 کی تکمیل کی شکل میں کی جاتی ہے۔ اس لیے دستخط شدہ انٹیجرز کی حد-32768 سے 32767 تک ہوتی ہے۔ رام میں قدر کے نچلے 15 بٹس بھی پوائنٹر کے معنی میں روم یا رام میں ایڈریس کی نمائندگی کر سکتے ہیں۔ اسکرین I/O کے لیے تفویض کردہ رام میموری رجسٹروں میں ویلیوز کے لیے، اگر اسکرین "آن" ہے تو کمپیوٹر کے آزاد I/O سب سسٹم کے ذریعے 256 قطار x 512 کالم ورچوئل اسکرین کے 16 پکسل نقشے کے طور پر ویلیو کی تشریح کی جائے گی۔ کی بورڈ میموری میں کوڈ ویلیو کو پروگرام کے طور پر پڑھا جا سکتا ہے اور کسی پروگرام کے استعمال کے لیے اس کی تشریح کی جا سکتی ہے۔ فلوٹنگ پوائنٹ کی اقسام کے لیے کوئی ہارڈ ویئر سپورٹ نہیں ہے۔ انسٹرکشن سیٹ آرکیٹیکچر (آئی ایس اے) اور مشین لینگویج ہیک کمپیوٹر کا انسٹرکشن سیٹ آرکیٹیکچر (آئی ایس اے) اور ماخوذ مشین لینگویج بہت سے دوسرے آرکیٹیکچرز کے مقابلے میں کم ہے۔ اگرچہ اے ایل یو کے ذریعہ کمپیوٹیشن کی وضاحت کے لیے استعمال ہونے والے 6 بٹس 64 الگ الگ ہدایات کی اجازت دے سکتے ہیں، لیکن ہیک کمپیوٹر کے آئی ایس اے میں صرف 18 کو باضابطہ طور پر لاگو کیا جاتا ہے۔ چونکہ ہیک کمپیوٹر ہارڈ ویئر میں نہ تو انٹیجر ضرب (اور تقسیم) یا فنکشن کالز کے لیے براہ راست سپورٹ ہے، اس لیے ان کارروائیوں کے لیے آئی ایس اے میں کوئی متعلقہ مشین زبان کی ہدایات نہیں ہیں۔ ہیک مشین زبان میں صرف دو قسم کی ہدایات ہوتی ہیں، جن میں سے ہر ایک کو 16 بائنری ہندسوں میں انکوڈ کیا جاتا ہے۔ A-ہدایات وہ ہدایات جن کا سب سے اہم بٹ "0" ہے انہیں A-ہدایات یا ایڈریس ہدایات کہا جاتا ہے۔ A-ہدایت کو بٹ فیلڈ کے طور پر درج ذیل انکوڈ کیا گیا ہے: 0b14b13b12b11b10b9b8b7b6b5b4b3b2b1b0-A-ہدایت کا سب سے اہم حصہ "0" b14-b0 ہے-یہ بٹس 0 سے 32767 تک اعشاریہ کی حد میں غیر منفی عدد کی بائنری نمائندگی فراہم کرتے ہیں۔ جب اس ہدایت پر عمل کیا جاتا ہے، تو باقی 15 بٹس بائیں صفر توسیع شدہ ہوتے ہیں اور CPU کے A-رجسٹر میں لوڈ ہوتے ہیں۔ ضمنی اثر کے طور پر، رام رجسٹر جس میں اس قدر کی نمائندگی کرنے والا پتہ ہوتا ہے، اگلے گھڑی کے چکر میں بعد میں پڑھنے/لکھنے کے عمل کے لیے فعال ہوتا ہے۔ دوسری انسٹرکشن ٹائپ، جسے C-انسٹرکشنز (کمپیوٹیشن انسٹرکشنز) کہا جاتا ہے، میں "1" سب سے اہم بٹ ہے۔ بقیہ 15 بٹس بٹ فیلڈ انکوڈ ہوتے ہیں جو آپریڈز، انجام دی گئی کمپیوٹیشن، اور مخصوص کمپیوٹیشن کے نتیجے کے لیے اسٹوریج لوکیشن کی وضاحت کرتے ہیں۔ یہ ہدایت حالیہ کمپیوٹیشن کے نتائج کی بنیاد پر پروگرام برانچ کی بھی وضاحت کر سکتی ہے۔ سی-انسٹرکشن بٹ فیلڈ کو مندرجہ ذیل طور پر انکوڈ کیا گیا ہے: 1x1x0ac5c4c3c2c1c0d2d1d0j2j1j0 1-سی-انسٹرکشن کا سب سے اہم حصہ "1" x1x0 ہے-یہ بٹس سی پی یو کے ذریعہ نظر انداز کیے جاتے ہیں اور، روایت کے مطابق، ہر ایک کو ہمیشہ "1" a پر سیٹ کیا جاتا ہے-یہ بٹ اے ایل یو کے "y" آپریڈ کے ماخذ کی وضاحت کرتا ہے جب اسے کمپیوٹیشن c0-c5 میں استعمال کیا جاتا ہے-یہ چھ کنٹرول بٹس ALU d2-d0 کے ذریعہ انجام دیئے جانے والے آپریڈ اور کمپیوٹیشن کی وضاحت کرتے ہیں-یہ تین بٹس کرنٹ کو اسٹور کرنے کے لیے منزل (ے) کی وضاحت کرتے ہیں۔ ان جدولوں میں، اے اس وقت اے-رجسٹر ڈی میں موجود قدر کی نمائندگی کرتا ہے جو اس وقت ڈی-رجسٹر ایم میں موجود قدر کی نمائندگی کرتا ہے جو اس وقت ڈیٹا میموری رجسٹر میں موجود قدر کی نمائندگی کرتا ہے جس کا پتہ اے-رجسٹر میں موجود ہے۔ یعنی، ایم = = رام [اے] اسمبلی زبان ہیک کمپیوٹر میں ہارڈ ویئر پلیٹ فارم کے لیے پروگرام بنانے کے لیے متن پر مبنی اسمبلی زبان ہے جو ہیک کمپیوٹر آئی ایس اے کو لاگو کرتا ہے۔ ہیک اسمبلی زبان کے پروگرام ٹیکسٹ فائلوں میں محفوظ کیے جا سکتے ہیں جن میں فائل کے نام کی توسیع ہوتی ہے۔ "ASM"۔ ہیک اسمبلی زبان کی ماخذ فائلیں کیس حساس ہوتی ہیں۔ متن کی ہر لائن میں درج ذیل عناصر میں سے ایک ہوتا ہے: خالی لائن کمنٹ لیبل ڈیکلریشن (اختیاری اینڈ آف لائن کمنٹ کے ساتھ) اے-انسٹرکشن (اختیاری اینڈ آف لائن کمنٹ کے ساتھ) سی-انسٹرکشن (اختیاری اینڈ آف لائن کمنٹ کے ساتھ) ان لائن کی ہر قسم کا ایک مخصوص نحو ہوتا ہے اور اس میں پہلے سے طے شدہ یا صارف کی وضاحت کردہ علامتیں یا عددی مستقلات شامل ہو سکتے ہیں۔ خالی لکیروں اور تبصروں کو اسمبلر نظر انداز کر دیتا ہے۔ لیبل ڈیکلیریشنز، اے-انسٹرکشنز، اور سی-انسٹرکشنز، جیسا کہ ذیل میں بیان کیا گیا ہے، میں کوئی اندرونی وائٹ اسپیس حروف شامل نہیں ہو سکتے ہیں، حالانکہ لیڈنگ یا ٹریلنگ وائٹ اسپیس کی اجازت ہے (اور نظر انداز کیا گیا ہے)۔ تبصرے دو حروف کی ترتیب "//" سے شروع ہونے والا کوئی بھی متن تبصرہ ہے۔ تبصرے صرف سورس کوڈ لائن پر ظاہر ہو سکتے ہیں، یا کسی دوسرے پروگرام سورس لائن کے آخر میں بھی رکھے جا سکتے ہیں۔ تبصرے کی شناخت کے کردار کی ترتیب کے بعد لائن کے آخر تک تمام متن کو اسمبلر کے ذریعہ مکمل طور پر نظر انداز کر دیا جاتا ہے ؛ اس کے نتیجے میں، وہ کوئی مشین کوڈ تیار نہیں کرتے ہیں۔ علامات اور عددی مستقلات ہیک اسمبلی زبان مختلف مخصوص مقاصد کی تعداد کے لیے حرفی ہندسوں کی علامتوں کے استعمال کی اجازت دیتی ہے۔ علامت حروف تہجی (اوپری اور نچلے کیس) یا عددی ہندسوں کی کوئی بھی ترتیب ہو سکتی ہے۔ علامتوں میں درج ذیل حروف میں سے کوئی بھی ہو سکتا ہے: انڈر بار ("_")، پیریڈ (".")، ڈالر کا نشان ("$")، اور کالون (":")۔ علامتوں کا آغاز ہندسوں کے حروف سے نہیں ہو سکتا۔ علامتیں کیس حساس ہوتی ہیں۔ متغیر نام اور لیبل بنانے کے لیے صارف کی وضاحت کردہ علامتیں استعمال کی جاتی ہیں (نیچے دیکھیں)۔ ہیک اسمبلی لینگویج اسمبلر اسمبلی لینگویج پروگراموں میں استعمال کے لیے کچھ پہلے سے طے شدہ علامتوں کو تسلیم کرتا ہے۔ علامات R0، R1،.، R15 بالترتیب 0 سے 15 تک کے انٹیجرز سے جڑے ہوئے ہیں۔ ان علامتوں کا مقصد عام مقصد کے رجسٹروں کی نمائندگی کرنا ہے اور علامتوں کی اقدار اس لیے ڈیٹا میموری پتے 0 سے 15 کی نمائندگی کرتی ہیں۔ پہلے سے طے شدہ علامات اسکرین اور کے بی ڈی بھی میموری میپڈ ورچوئل اسکرین آؤٹ پٹ (16384) اور کی بورڈ ان پٹ (24756) کے آغاز کے ڈیٹا میموری ایڈریس کی نمائندگی کرنے کے لیے مخصوص ہیں۔ کچھ دیگر علامتیں (ایس پی، ایل سی ایل، اے آر جی، یہ، اور وہ) ہیں جو آپریٹنگ سسٹم سافٹ ویئر اسٹیک کی تعمیر میں استعمال ہوتی ہیں۔ اعشاریہ (0-9) ہندسوں کی ایک تار کو 0 سے 32,767 کی حد میں غیر منفی، اعشاریہ مستقل کی نمائندگی کے لیے استعمال کیا جا سکتا ہے۔ منفی نمبر کی نشاندہی کرنے کے لیے منفی نشان کے استعمال کی اجازت نہیں ہے۔ بائنری یا آکٹل نمائندگی کی حمایت نہیں کی جاتی ہے۔ متغیرات متغیرات کی نمائندگی کرنے کے لیے اسمبلی زبان کے پروگرام میں صارف کی وضاحت کردہ علامتیں بنائی جا سکتی ہیں ؛ یعنی ایک نامزد رام رجسٹر۔ علامت اسمبلی میں اسمبلر کے منتخب کردہ رام ایڈریس سے جڑی ہوتی ہے۔ لہذا، اسمبلی زبان کے سورس کوڈ میں ظاہر ہونے پر متغیرات کو پتے کے طور پر سمجھا جانا چاہیے۔ متغیرات کی واضح طور پر اسمبلی زبان کے سورس کوڈ میں وضاحت کی جاتی ہے جب انہیں پہلی بار اے-ہدایت میں حوالہ دیا جاتا ہے۔ جب سورس کوڈ کو اسمبلر کے ذریعے پروسیس کیا جاتا ہے، تو متغیر علامت ایڈریس 16 کے آغاز میں ایک منفرد مثبت عدد قدر سے منسلک ہوتی ہے۔ پتے ترتیب وار متغیر علامتوں سے جڑے ہوتے ہیں جو کہ سورس کوڈ میں ان کی پہلی ظاہری شکل کی ترتیب میں ہوتے ہیں۔ روایت کے مطابق، پروگرام کے متغیرات کی شناخت کرنے والی صارف سے متعین علامتیں تمام چھوٹے کیس میں لکھی جاتی ہیں۔ لیبلز لیبلز ایسی علامتیں ہیں جو بائیں "(" اور دائیں ")" قوسین "کے ذریعے محدود ہوتی ہیں۔ ان کی وضاحت ایک علیحدہ سورس پروگرام لائن پر کی جاتی ہے اور وہ اسمبلر کے ذریعہ سورس کوڈ میں اگلی ہدایت کے انسٹرکشن میموری لوکیشن کے پتے سے منسلک ہوتے ہیں۔ لیبلز کی وضاحت صرف ایک بار کی جا سکتی ہے، لیکن انہیں پروگرام کے اندر کہیں بھی متعدد بار استعمال کیا جا سکتا ہے، یہاں تک کہ اس لائن سے پہلے بھی جس پر ان کی وضاحت کی گئی ہے۔ روایت کے مطابق، لیبلز کا اظہار آل کیپس میں کیا جاتا ہے۔ ان کا استعمال برانچ سی-ہدایات کے ٹارگٹ ایڈریس کی شناخت کے لیے کیا جاتا ہے۔ A-ہدایات A-ہدایات میں نحو "@xxxx" ہے، جہاں XXXX یا تو 0 سے 32767 کی حد میں ایک عددی اعشاریہ مستقل ہے، ایک لیبل، یا ایک متغیر (پہلے سے طے شدہ یا صارف کی وضاحت شدہ) ہے۔ جب اس پر عمل کیا جاتا ہے، تو یہ ہدایت A رجسٹر اور M سڈو رجسٹر کی قیمت کو 15 بٹ بائنری ویلیو پر سیٹ کرتی ہے جس کی نمائندگی "XXXX" کرتی ہے۔ 15 بٹ کی قیمت بائیں صفر ہے جسے اے رجسٹر میں 16 بٹس تک بڑھایا گیا ہے۔ اے-ہدایات کو تین میں سے کسی ایک مقصد کے لیے استعمال کیا جا سکتا ہے۔ پروگرام کنٹرول کے تحت کمپیوٹر میں (غیر منفی) عددی قدر متعارف کرانے کا یہ واحد ذریعہ ہے ؛ یعنی، اسے پروگرام مستقل بنانے کے لیے استعمال کیا جا سکتا ہے۔ دوسرا، یہ سی-ہدایت کے ذریعے بعد کے حوالہ کے لیے ایم سیوڈو-رجسٹر میکانزم کا استعمال کرتے ہوئے رام میموری لوکیشن کی وضاحت کے لیے استعمال ہوتا ہے۔ آخر میں، ایک سی-ہدایت جو برانچ کی وضاحت کرتی ہے، اے رجسٹر کی موجودہ قیمت کو برانچ ٹارگٹ ایڈریس کے طور پر استعمال کرتی ہے۔ اے-انسٹرکشن کا استعمال برانچ انسٹرکشن سے پہلے اس ٹارگٹ ایڈریس کو سیٹ کرنے کے لیے کیا جاتا ہے، عام طور پر لیبل کے حوالے سے۔ سی-ہدایات سی-ہدایات ہیک کمپیوٹر کے اے ایل یو کمپیوٹیشن انجن اور پروگرام فلو کنٹرول کی صلاحیتوں کو ہدایت کرتی ہیں۔ انسٹرکشن نحو کی تعریف تین شعبوں سے کی جاتی ہے، جنہیں "کمپ"، "ڈیسٹ"، اور "جمپ" کہا جاتا ہے۔ ہر سی-ہدایت میں کمپ فیلڈ کی ضرورت ہوتی ہے۔ سی-انسٹرکشن کا نحو "ڈیسٹ = کمپ ؛ جمپ" ہے۔ "=" اور "؛" حروف کا استعمال ہدایات کے شعبوں کو محدود کرنے کے لیے کیا جاتا ہے۔ اگر ڈیسٹ فیلڈ استعمال نہیں کیا جاتا ہے، تو "=" کردار کو خارج کر دیا جاتا ہے۔ اگر جمپ فیلڈ استعمال نہیں کیا جاتا ہے، تو "؛" کردار کو خارج کر دیا جاتا ہے۔ سی-ہدایت کسی اندرونی جگہ کی اجازت نہیں دیتی ہے۔ کمپ فیلڈ مندرجہ بالا ٹیبل میں بیان کردہ 28 دستاویزی یادگاری کوڈز میں سے ایک ہونا چاہیے۔ ان کوڈز کو الگ الگ اکائیاں سمجھا جاتا ہے۔ ان کا اظہار تمام کیپس میں ہونا چاہیے جس میں کوئی اندرونی خالی جگہ نہ ہو۔ یہ نوٹ کیا گیا ہے کہ 6 اے ایل یو کنٹرول بٹس ممکنہ طور پر 64 کمپیوٹیشنل افعال کی وضاحت کر سکتے ہیں ؛ تاہم، ٹیبل میں پیش کردہ صرف 18 کو باضابطہ طور پر اسمبلر کے ذریعے شناخت کے لیے دستاویزی شکل دی گئی ہے۔ مخصوص حساب کے نتیجے کو ذخیرہ کرنے کے لیے ایک یا زیادہ مقامات کی وضاحت کے لیے ڈیسٹ فیلڈ کا استعمال کیا جا سکتا ہے۔ اگر اس فیلڈ کو "=" ڈیلیمیٹر کے ساتھ چھوڑا جاتا ہے، تو کمپیوٹڈ ویلیو کو محفوظ نہیں کیا جاتا ہے۔ اجازت شدہ اسٹوریج لوکیشن کے امتزاج کی وضاحت اوپر دیے گئے ٹیبل میں بیان کردہ یادگاری کوڈز کے ذریعے کی جاتی ہے۔ جمپ فیلڈ کو عمل میں لانے کے لیے اگلی ہدایت کے روم میں ایڈریس کی وضاحت کے لیے استعمال کیا جا سکتا ہے۔ اگر فیلڈ کو "؛" ڈیلیمیٹر کے ساتھ چھوڑ دیا جاتا ہے، تو موجودہ ہدایت کے فورا بعد ہدایات کے ساتھ عمل جاری رہتا ہے۔ برانچ ایڈریس کا ہدف، روم میں، اے رجسٹر کی موجودہ قیمت کے ذریعے فراہم کیا جاتا ہے اگر مخصوص برانچ کی شرط پوری ہو۔ اگر برانچ کی حالت ناکام ہو جاتی ہے تو ROM میں اگلی ہدایت کے ساتھ عمل جاری رہتا ہے۔ موجودہ حساب کی قدر کی بنیاد پر چھ مختلف موازنہ کے لیے یادداشت کے کوڈ فراہم کیے جاتے ہیں۔ مزید برآں، ساتویں آپشن کے طور پر ایک غیر مشروط برانچ فراہم کی جاتی ہے۔ کیونکہ کمپ فیلڈ کو ہمیشہ فراہم کیا جانا چاہیے، حالانکہ غیر مشروط برانچ کے لیے ویلیو کی ضرورت نہیں ہے، اس ہدایت کا نحو "0 ؛ جے ایم پی" کے طور پر دیا گیا ہے۔ معاون برانچ کے شرائط اوپر دیے گئے جدول میں بیان کیے گئے ہیں۔ ہیک کمپیوٹر کی حمایت کرنے والے آزادانہ طور پر دستیاب سافٹ ویئر میں کمانڈ لائن اسمبلر ایپلی کیشن شامل ہے۔ اسمبلر ہیک اسمبلی لینگویج سورس ٹائلوں (*. asm) کو پڑھتا ہے اور ہیک مشین لینگویج آؤٹ پٹ فائلیں (*. hack) تیار کرتا ہے۔ مشین لینگویج فائل بھی ایک ٹیکسٹ فائل ہے۔ اس فائل کی ہر لائن بائنری ہندسوں کی 16 حروف کی سٹرنگ ہے جو "انسٹرکشن سیٹ آرکیٹیکچر (آئی ایس اے) اور مشین لینگویج" سیکشن میں بیان کردہ تفصیلات کے مطابق سورس ٹیکسٹ فائل کی ہر متعلقہ قابل عمل لائن کی انکوڈنگ کی نمائندگی کرتی ہے۔ بنائی گئی فائل کو ایمولیٹر یوزر انٹرفیس کے ذریعہ فراہم کردہ سہولت کے ذریعے ہیک کمپیوٹر ایمولیٹر میں لوڈ کیا جا سکتا ہے۔ مندرجہ ذیل اسمبلی زبان کا پروگرام ہیک اسمبلی زبان میں لکھا گیا ایک تشریح شدہ مثال والا پروگرام ہے۔ یہ پروگرام پہلے مسلسل 100 انٹیجرز کا خلاصہ کرتا ہے اور حساب کے نتیجے کو صارف کے طے شدہ متغیر میں رکھتا ہے جسے "سم" کہا جاتا ہے۔ یہ تکرار کرنے کے لیے "وائل" لوپ کی تعمیر کو لاگو کرتا ہے حالانکہ انٹیجر کی اقدار 1 سے 100 تک ہوتی ہیں اور ہر انٹیجر کو "سم" متغیر میں شامل کرتا ہے۔ صارف سے متعین متغیر "سی این ٹی" لوپ کے ذریعے موجودہ انٹیجر ویلیو کو برقرار رکھتا ہے۔ یہ پروگرام ہیک کمپیوٹر کی "دستاویزی" اسمبلی زبان کی صلاحیتوں کی تمام خصوصیات کی وضاحت کرتا ہے سوائے میموری میپڈ I/O کے۔ ہیک اسمبلی زبان ماخذ فائل کے مندرجات دوسرے کالم میں بولڈ فونٹ میں دکھائے گئے ہیں۔ لائن نمبر مندرجہ ذیل بحث میں حوالہ کے لیے فراہم کیے گئے ہیں لیکن سورس کوڈ میں ظاہر نہیں ہوتے ہیں۔ اسمبلر کے ذریعہ تیار کردہ ہیک مشین کوڈ کو پچھلے کالم میں تفویض کردہ روم ایڈریس کے ساتھ آخری کالم میں دکھایا گیا ہے۔ نوٹ کریں کہ مکمل لائن والے تبصرے، خالی لائنیں، اور لیبل کی تعریف کے بیانات کوئی مشین زبان کا کوڈ پیدا نہیں کرتے ہیں۔ نیز، اسمبلی زبان کی ہدایت پر مشتمل ہر سطر کے آخر میں فراہم کردہ تبصرے کو اسمبلر نظر انداز کر دیتا ہے۔ اسمبلر آؤٹ پٹ، جو آخری کالم میں دکھایا گیا ہے، 16 بائنری حروف کی ٹیکسٹ سٹرنگ ہے، نہ کہ 16 بٹ بائنری انٹیجر کی نمائندگی۔ نوٹ کریں کہ انسٹرکشن سیکوینس اے-انسٹرکشن، سی-انسٹرکشن، اے-انسٹرکشن، سی-انسٹرکشن کے پیٹرن کی پیروی کرتا ہے۔ یہ ہیک اسمبلی زبان کے پروگراموں کے لیے عام ہے۔ اے-ہدایت ایک مستقل یا میموری ایڈریس کی وضاحت کرتی ہے جو بعد میں سی-ہدایت میں استعمال ہوتا ہے۔ اے-ہدایات کے تینوں تغیرات کی وضاحت کی گئی ہے۔ لائن 11 (@100) میں، مستقل قیمت 100 کو A رجسٹر میں لوڈ کیا جاتا ہے۔ یہ ویلیو لائن 12 (D = D-A) میں لوپ برانچ کی حالت کی جانچ کے لیے استعمال ہونے والی ویلیو کا حساب لگانے کے لیے استعمال ہوتی ہے۔ چونکہ لائن 4 (@cnt) صارف سے متعین متغیر "cnt" کی پہلی ظاہری شکل پر مشتمل ہے، اس لیے یہ بیان علامت کو اگلے غیر استعمال شدہ رام ایڈریس سے جوڑتا ہے۔ اس مثال میں، پتہ 16 ہے، اور اس قیمت کو اے رجسٹر میں لوڈ کیا جاتا ہے۔ نیز، ایم سڈو رجسٹر بھی اب اس پتے کا حوالہ دیتا ہے، اور رام [16] کو فعال رام میموری لوکیشن بنایا جاتا ہے۔ اے-ہدایت کا تیسرا استعمال لائن 21 (@LOOP) میں دیکھا جاتا ہے۔ یہاں ہدایت باؤنڈ لیبل ویلیو کو لوڈ کرتی ہے، جو روم میموری میں ایڈریس کی نمائندگی کرتی ہے، اے رجسٹر اور ایم سیوڈو رجسٹر میں۔ لائن 22 (0 ؛ جے ایم پی) میں اس کے بعد کی غیر مشروط برانچ انسٹرکشن ایم رجسٹر ویلیو کو سی پی یو کے پروگرام کاؤنٹر رجسٹر میں لوڈ کرتی ہے تاکہ لوپ کے آغاز میں کنٹرول ٹرانسفر کو متاثر کیا جا سکے۔ ہیک کمپیوٹر پروگرام کے نفاذ کو روکنے کے لیے کوئی مشین زبان کی ہدایت فراہم نہیں کرتا ہے۔ پروگرام کی آخری دو لائنیں (@END اور 0 ؛ JMP) ایک لامحدود لوپ کی حالت پیدا کرتی ہیں جسے ہیک اسمبلی پروگرام روایتی طور پر CPU ایمولیٹر میں چلانے کے لیے بنائے گئے پروگراموں کو ختم کرنے کے لیے استعمال کرتے ہیں۔ ہینسی، جان ایل، اور پیٹرسن، ڈیوڈ اے کو بھی دیکھیں۔ (2019)۔ کمپیوٹر آرکیٹیکچر: ایک مقداری نقطہ نظر، چھٹا ایڈیشن۔ کیمبرج، میساچوسٹس: مورگن کافمین پبلشرز جسٹس، میتھیو۔ (2021)۔ کمپیوٹر واقعی کیسے کام کرتے ہیں۔ سان فرانسسکو، کیلیفورنیا: کوئی اسٹارچ پریس نہیں۔ مالوینو، البرٹ پی، اور براؤن، جیرالڈ اے۔ (1993)۔ ڈیجیٹل کمپیوٹر الیکٹرانکس، تیسرا ایڈیشن۔ نیویارک، نیویارک: گلینکو میک گرا ہل نل، لنڈا، اور لوبر، جولیا۔ (2019)۔ کمپیوٹر تنظیم اور فن تعمیر کی بنیادی باتیں۔ پانچواں ایڈیشن۔ برلنگٹن، میساچوسٹس: جونز اور بارٹلیٹ لرننگ۔ پٹ، ییل این، اور پٹیل، سنجے جے۔ (2020) کمپیوٹنگ سسٹمز کا تعارف: بٹس اینڈ گیٹس سے لے کر سی اینڈ بیونڈ تک، تیسرا ایڈیشن۔ نیویارک، نیویارک: میک گرا ہل ایجوکیشن۔ پیٹزولڈ، چارلس۔ (2009)۔ کوڈ: کمپیوٹر ہارڈ ویئر اور سافٹ ویئر کی پوشیدہ زبان۔ ریڈمنڈ، واشنگٹن: مائیکروسافٹ پریس۔ سکاٹ، جان کلارک۔ (2009)۔ لیکن کس طرح آپ کو اسے حل کریں گے? سب کے لیے کمپیوٹر کے بنیادی اصول۔ اولڈسمار، فلوریڈا: جان سی سکاٹ۔ وپل، رچرڈ۔ (2019)۔ سکریچ سے اپنا کمپیوٹر بنائیں۔ سیئٹل، واشنگٹن: ایمیزون جلانے والا۔ حوالہ جات کمپیوٹر