আমাদের প্রায়শই বলা হয়ে থাকে যে কোনও প্রোগ্রাম কোন ভাষায় লেখা হয় তা হার্ডওয়্যারের যত্নশীল না কারণ এটি কেবল সংকলিত বাইনারি কোড দেখায়, তবে এটি পুরো সত্য নয়। উদাহরণস্বরূপ, নম্র জেড 80 বিবেচনা করুন; এর 8080 ইন্সট্রাকশন সেটটিতে এর বর্ধিতকরণগুলিতে সিপিআইআর এর মতো নির্দেশাবলী অন্তর্ভুক্ত রয়েছে যা সি-স্টাইল (NULL- টার্মিনেটেড) স্ট্রিংগুলি স্ক্যান করার জন্য দরকারী, যেমন সম্পাদন করতে strlen()
। ডিজাইনাররা অবশ্যই সনাক্ত করতে পেরেছেন যে সি প্রোগ্রামগুলি চালানো (পাস্কালের বিপরীতে যেখানে একটি স্ট্রিংয়ের দৈর্ঘ্য শিরোনামে রয়েছে) এমন কিছু ছিল যা তাদের নকশা ব্যবহার করার সম্ভাবনা ছিল। আর একটি ক্লাসিক উদাহরণ লিস্প মেশিন ।
এখানে আর কী উদাহরণ রয়েছে? উদাহরণস্বরূপ, নির্দেশাবলী, রেজিস্ট্রারগুলির সংখ্যা এবং প্রকারগুলি, ঠিকানাগুলির মোডগুলি, যা কোনও নির্দিষ্ট প্রসেসরকে কোনও বিশেষ ভাষার সম্মেলনের পক্ষে রাখে? আমি একই পরিবারের পুনর্বিবেচনায় বিশেষভাবে আগ্রহী।
sizeof(int)
1 সমান char
হতে হবে সেই ধরণের স্বাক্ষরিত int
হওয়া আবশ্যক (যেহেতু একটি প্রকারের সমস্ত মানের মান রাখতে সক্ষম হবে char
)। আমি এমন কোনও মেশিনের জন্য কোড লিখেছি যেখানে char
এবং int
উভয়ই 16-বিট স্বাক্ষরিত পূর্ণসংখ্যা হয়; সবচেয়ে বড় অসুবিধা হ'ল কোনও রূপান্তর রূপের জন্য ইউনিয়নগুলি ব্যবহার করতে পারে না এবং বিপুল সংখ্যক বাইটের দক্ষ সঞ্চয়ের জন্য ম্যানুয়াল প্যাকিং এবং আনপ্যাকিং প্রয়োজন। সেই সমস্যাগুলি সি এর সম্ভাব্যতার সাথে তুলনামূলকভাবে তুলনায় খুব কম (আকার) == আকারের (দীর্ঘ), যেহেতু ...
unsigned int
মানের মধ্যে পার্থক্য রাখার গ্যারান্টিযুক্ত । সি 99 সেই অবস্থার উন্নতি করেছে, তবে সি 99 এর আগে কোনও সম্ভাব্য-নেতিবাচক মানকে ধরণের মানের সাথে তুলনা করার কোনও গ্যারান্টিযুক্ত-নিরাপদ একক-পদক্ষেপের উপায় unsigned int
ছিল না (তুলনা করার আগে সংখ্যাটি নেতিবাচক ছিল কিনা তা পরীক্ষা করে দেখতে হবে)।