हमें अक्सर बताया जाता है कि हार्डवेयर को इस बात की परवाह नहीं है कि कोई प्रोग्राम किस भाषा में लिखा गया है क्योंकि यह केवल संकलित बाइनरी कोड को देखता है, हालांकि यह पूरी सच्चाई नहीं है। उदाहरण के लिए, विनम्र Z80 पर विचार करें; 8080 इंस्ट्रक्शन सेट के लिए इसके एक्सटेंशन में CPIR जैसे निर्देश शामिल हैं जो C- स्टाइल (NULL-टर्मिनेटेड) स्ट्रिंग्स को स्कैन करने के लिए उपयोगी है, उदाहरण के लिए strlen()
। डिजाइनरों ने पहचान लिया होगा कि चल रहे सी प्रोग्राम (पास्कल के विपरीत, जहां एक स्ट्रिंग की लंबाई हेडर में है) कुछ ऐसा था कि उनके डिजाइन का उपयोग करने की संभावना थी। एक और क्लासिक उदाहरण लिस्प मशीन है ।
और क्या उदाहरण हैं? जैसे निर्देश, संख्या और रजिस्टर के प्रकार , संबोधित करने के तरीके, जो किसी विशेष प्रोसेसर को किसी विशेष भाषा के सम्मेलनों के पक्ष में बनाते हैं? मैं विशेष रूप से एक ही परिवार के संशोधनों में दिलचस्पी रखता हूं।
sizeof(int)
1 के बराबर होना चाहिए उस प्रकार char
पर हस्ताक्षर किए जाने int
चाहिए (चूंकि सभी प्रकार के मूल्यों को धारण करने में सक्षम होना चाहिए char
)। मैं एक मशीन के लिए कोड लिखा जहां गए हैं char
और int
दोनों 16-बिट पर हस्ताक्षर किए पूर्णांक हैं; सबसे बड़ी कठिनाइयाँ यह हैं कि एक प्रकार के रूपांतरण के लिए यूनियनों का उपयोग नहीं किया जा सकता है, और बड़ी संख्या में बाइट्स के कुशल भंडारण के लिए मैनुअल पैकिंग और अनपैकिंग की आवश्यकता होती है। सी में आकार की संभावना की तुलना में वे मुद्दे मामूली हैं (int) == sizeof (लंबा), चूंकि ...
unsigned int
मूल्यों के बीच अंतर रखने की गारंटी है । C99 ने उस स्थिति में सुधार किया, लेकिन C99 से पहले प्रकार के मूल्य के लिए संभावित-नकारात्मक मूल्य की तुलना करने के लिए कोई गारंटी-सुरक्षित एकल-चरण तरीका नहीं था unsigned int
(किसी को परीक्षण करना होगा कि क्या तुलना करने से पहले संख्या नकारात्मक थी)।