দুজনের মধ্যে কি কোনও পার্থক্য আছে? অনুযায়ী Ullman এর বই , কম্পাইলার অন্য (সাধারণত নিম্ন স্তরের) ভাষা থেকে এক ভাষা রূপান্তর, এবং তাই একটি প্রতীকী ভাষান্তর করে। দু'জন কীভাবে আলাদা?
দুজনের মধ্যে কি কোনও পার্থক্য আছে? অনুযায়ী Ullman এর বই , কম্পাইলার অন্য (সাধারণত নিম্ন স্তরের) ভাষা থেকে এক ভাষা রূপান্তর, এবং তাই একটি প্রতীকী ভাষান্তর করে। দু'জন কীভাবে আলাদা?
উত্তর:
একটি সমাবেশকারী মেশিন কোডে এসেম্বলি কোডটি অনুবাদ করে। অনুবাদটি যান্ত্রিক, এবং শুধুমাত্র একটি উপায়ে করা যেতে পারে। বিপরীতে, একটি সংকলকটির অধিকতর স্বাধীনতা থাকে যখন এটি প্রাসঙ্গিক প্রোগ্রামিং ভাষা সংকলন করে - এটি অনুকূলিতকরণ করতে পারে, উদাহরণস্বরূপ, এমনকি অপ-অপ্টিমাইজ করা সংকলকগুলি বিভিন্ন কোড তৈরি করে different এছাড়াও, সংকলকগুলি এমনভাবে রচনা করা যেতে পারে যা "ফ্রন্ট-এন্ড" (প্রোগ্রামিং ভাষার সাথে সংগতিপূর্ণ) এবং "ব্যাক-এন্ড" (কম্পিউটার আর্কিটেকচারের সাথে সঙ্গতিপূর্ণ) আলাদা করে, যেখানে এসেম্বলারের সাথে উভয় সর্বদা একই থাকে।
নীচের লাইনটি এটি একটি এসেম্বলারের চেয়ে সংকলকটি লিখতে আরও মজাদার । অ্যাসেম্বলির ভাষাগুলি সাধারণত পার্স করা এবং টাইপ পরীক্ষার জন্য প্রায় তুচ্ছ হিসাবে ডিজাইন করা হয় এবং প্রচুর টেবিলচালিত জেনারেটরকে জড়িত করে ("অ্যাডের জন্য অপকোডটি 01110", "লোড নির্দেশিকাগুলির জন্য গন্তব্য অপারেন্ড রেজিস্টার বিট 17 দ্বারা 21 দ্বারা নির্দিষ্ট করা হয়) ")। সাধারণত একটি এসেম্বলারের সবচেয়ে আকর্ষণীয় অংশটি সেই অংশটি প্রতীকী লেবেলগুলিকে সংখ্যায় সমাধান করে।
তবে , বেশিরভাগ এসেমব্লাররা অল্প পরিমাণে পাটিগণিত করতে পারেন (উদাহরণস্বরূপ ছোট কনস্ট্যান্টগুলির সাথে প্রতীকী লেবেল যুক্ত করা) এবং বেশিরভাগ এসেমব্লাররা ম্যাক্রো প্রসেসিং সুবিধার সাথে হয় বা একত্রিত হন। (বেশিরভাগ ইউনিক্স সিস্টেমে ম্যাক্রো বৈশিষ্ট্যটি অ্যাসেমব্লারে যথাযথভাবে পাস করার আগে অ্যাসেমব্লিতে সি প্রসেসর চালিয়ে সরবরাহ করা হয়))
এমআইপিএস সমবেতকারীকে এর বাইরে এক ধাপ এগিয়ে যেতে হয়েছিল এবং কিছু আকর্ষণীয় কোড জেনারেশন সিদ্ধান্ত নিয়েছিল এবং অল্প পরিমাণে অপ্টিমাইজেশন করেছিল। এমআইপিএস মেশিন ল্যাঙ্গুয়েজের জন্য বিভিন্ন ধ্রুবকগুলি লোড করার জন্য বিভিন্ন কোড সিকোয়েন্সের প্রয়োজন হয়, এবং সুতরাং অ্যাসেমব্লারকে ধ্রুবকটি তৈরির পরে কোড সিকোয়েন্সটি বেছে নিতে হয়েছিল । আরও, এমআইপিএস মেশিন কোডের ধারণা ছিল বিলম্ব স্লট, তবে এগুলি দূরে বিমূর্ত করা এবং সংকলকটির কাছে আরও একটি "সাধারণ" বিমূর্ত সমাবেশ ভাষা উপস্থাপন করা এটি সমাবেশকারীর দায়িত্ব ছিল। সুতরাং এমআইপিএস এসেম্বলারের কিছু স্থানীয় নির্দেশের সময়সূচী করা দরকার।
পার্থক্যটি আরও স্পষ্ট করে তোলে নরমন রামসির কিছু কাজ দ্বারা, বিশেষত তাঁর সি - বহনযোগ্য সমাবেশের ভাষা। (প্রাসঙ্গিক কাগজটি হ'ল র্যামসে এবং পাইটন জোন্স, "একক আন্তঃ মধ্যবর্তী ভাষা যা ব্যতিক্রমগুলির একাধিক বাস্তবায়নকে সমর্থন করে", প্রোগ। ল্যাং। ইমপ্লিটি এবং ডিএসজিএন । (পিএলডিআই -21): ২৮৫-২৯৮, 2000। ) এবং অবশেষে, সেখানে একটি হল টাইপ সমাবেশ ভাষা ডেভিড ওয়াকার ও গ্রেগ Morrisett থেকে একটি প্রতীকী ভাষান্তর মেমরি নিরাপত্তা নিশ্চিত করতে পারে না সঙ্গে।
এখানে সরলিকৃত উত্তর কিছুটা, বাস্তবতা আরও জটিল। আমি আশা করি যে একজন এসেম্ব্লার (এ) এবং একটি সংকলক (সি) এর মধ্যে অন্যান্য জিনিসের মধ্যে পার্থক্য থাকবে:
আমরা সমাবেশ ভাষা "নিম্ন স্তরের" এবং উত্স ভাষা সংকলক "উচ্চ স্তরের" বোঝে (এটি স্থূল সরলীকরণ, তবে এখনও) বলে অভিহিত করি।
সমাবেশ ভাষায় উদাহরণস্বরূপ আপনি এই বলে একটি অ্যাড অপারেশন করতে পারেন:
উচ্চ স্তরের ভাষায় আপনি লিখতে পারেন:
এবং এর ফলে একটি পরিস্থিতিতে বা শত শত নির্দেশাবলীর বিভিন্ন অবস্থার উপর নির্ভর করে ফলাফল তৈরি হতে পারে, সিপিইউ যা সংকলক নির্দেশাবলী তৈরি করে তা হ'ল।
আপনি দেখতে পাচ্ছেন যে সমাবেশের উত্স ভাষাটি প্রায়শই: (ক) উত্স কোডের একটি লাইন সিপিইউ অপকডের একটি লাইন দেয় এবং এটি আপনি কোন সিপিইউ লক্ষ্য করে চলেছেন তা নির্ভর করে। একটি উচ্চ স্তরের ভাষা (সি) সংকলক আপনার জন্য এই সমস্ত বিবরণ পরিচালনা করে - সোর্স কোডের একটি লাইন শূন্য হয়ে যেতে পারে, এক বা একাধিক সিপিইউ অপকোড এবং সংকলক সিপিইউ কী করতে পারে তার বিশদ পরিচালনা করে।
একটি সংকলক আজ প্রায়শই বিভিন্ন ধাপে গঠিত। এগুলিকে ফ্রন্টএন্ড / ব্যাকএন্ড বা মৌমাছির নামকরণ করা যেতে পারে যা অন্যান্য জিনিস বলে। আমি সাধারণত তাদের চারটি পর্যায় হিসাবে দেখি:
ভাল সংকলক লেখার একটি অত্যন্ত দক্ষ পেশা - একটি খেলনা ভাষার সংকলক তৈরি একটি বিকেলে একটি অ্যামেটুয়ার (বা ভাল, কিছুটা দীর্ঘ) দ্বারা করা যেতে পারে।