আমি আমার স্নাতক স্নাতক অধ্যয়নের সংকলকগুলির উপর একটি কোর্স নিয়েছিলাম যাতে আমরা একটি সংকলক লিখেছিলাম যে একটি খেলনা জাভা-জাতীয় ভাষায় উত্স প্রোগ্রামগুলি একটি খেলনা সমাবেশের ভাষাতে সংকলন করে (যার জন্য আমাদের একজন দোভাষী ছিল)। প্রকল্পে আমরা টার্গেট মেশিনটি "রিয়েল" নেটিভ এক্সিকিউটেবলের সাথে নিবিড়ভাবে সম্পর্কিত সম্পর্কিত কিছু অনুমান করেছি, যার মধ্যে রয়েছে:
- একটি রান-টাইম স্ট্যাক, ডেডিকেটেড স্ট্যাক পয়েন্টার ("এসপি") রেজিস্টার দ্বারা ট্র্যাক করা
- গতিশীল অবজেক্ট বরাদ্দকরণের জন্য একটি গাদা, ডেডিকেটেড হিপ পয়েন্টার ("এইচপি") রেজিস্টার দ্বারা ট্র্যাক করা
- একটি ডেডিকেটেড প্রোগ্রাম কাউন্টার রেজিস্টার ("পিসি")
- লক্ষ্য মেশিনে 16 টি নিবন্ধ রয়েছে
- ডেটাতে অপারেশনগুলি (যেমন, যেমন লাফের বিপরীতে) নিবন্ধভুক্ত-থেকে-নিবন্ধকরণ অপারেশন
যখন আমরা একক হিসাবে নিবন্ধকরণ বরাদ্দ ব্যবহার করে ইউনিটটিতে পৌঁছেছিলাম, তখন তা আমাকে অবাক করে তুলেছিল: এই জাতীয় মেশিনের জন্য তাত্ত্বিক ন্যূনতম সংখ্যা কত? আপনি আমাদের অনুমান দ্বারা দেখতে পাচ্ছেন যে আমরা আমাদের সংকলকটিতে পাঁচটি রেজিস্টার (এসপি, এইচপি, পিসি, এবং দুটি বাইনারি অপারেশনগুলির জন্য সঞ্চয় হিসাবে ব্যবহারের জন্য) ব্যবহার করেছি। রেজিস্টার বরাদ্দ মত অপ্টিমাইজেশন অবশ্যই ব্যবহার করতে পারেন যদিও আরও রেজিস্টার, একটি উপায় আছে তার চেয়ে কম স্ট্যাকের এবং গাদা মত থাকতেই ধারনকারী কাঠামোর সঙ্গে দ্বারা পেতে হয়? আমি মনে করি রেজিস্টার ঠিকানা (রেজিস্ট্রার টু-রেজিস্ট্রার অপারেশন) দিয়ে আমাদের কমপক্ষে দু'জন রেজিস্টার প্রয়োজন, তবে আমাদের কি আরও দু'জনের বেশি দরকার?