'अहस्ताक्षरित चार' के पास क्या है?


12

मैं एक डेटशीट पढ़ता हूं और मुझे वैरिएबल के रूप में परिभाषित किया गया है unsigned char near Sample_X। यह क्या है, और यह कैसे अलग है unsigned char Sample_X?


3
शायद संकलक को छोटे रिश्तेदार ऑफसेट का उपयोग करने की अनुमति देता है?
नील_यूके

6
डॉस में x86 के साथ अनुभव के आधार पर, मैं कुछ पॉइंटर प्रकार के साथ और 16 बिट परिवेश में इसकी अपेक्षा करूंगा। फिर भी ओपी के हवाले से एक सूचक की तरह नहीं दिखता है और डेटाशीट लिंक कुछ MCU होगा। निम्नलिखित दो लिंक में "पास" कीवर्ड की खोज करें: microchip.com/forums/m549709.aspx barrgroup.com/Embedded-Systems/How-To/Efficient-C-Code
frr

3
यह ध्यान दिया जाना चाहिए कि यह एक संकलक एक्सटेंशन है, न कि मानक C
प्लाज़्मा एचएच

1
FYI, कीवर्ड, nearएक स्टोरेज क्लास स्पेसियर का एक उदाहरण है । यह संकलक को बताता है कि चर के लिए भंडारण कैसे या कहाँ आवंटित किया जाना चाहिए। (अधिक के बारे में नीचे, फिल्मो का जवाब देखें near)।
सोलोमन स्लो

1
क्या यह वास्तव में यहाँ विषय है?
user541686

जवाबों:


20

यहाँ निर्दिष्ट MCU एक Freescale MC9C08 श्रृंखला है , जो उनके HC08 आर्किटेक्चर के थोड़े संवर्धित संस्करण का उपयोग करता है। यह एक 8-बिट कोर है, जो (जैसे कई) छोटे निर्देशों और दूसरों की तुलना में "शून्य पृष्ठ" पते तक तेजी से पहुंच है। शून्य-पृष्ठ पते 16 बिट्स के बजाय केवल 8 बिट्स हैं, इसलिए उन्हें संदर्भित करने वाले निर्देश 3 के बजाय 2 बाइट्स हो सकते हैं, और परिणामस्वरूप 1 चक्र कम ले सकते हैं

"निकट" कीवर्ड कंपाइलर को बेहतर प्रदर्शन के लिए, यदि संभव हो तो चर को "शून्य पृष्ठ" में रखने का निर्देश देता है। संकलक विशेष रूप से एम्बेडेड विकास के लिए लिखे गए हैं, जैसे कि यह एक , आमतौर पर इस तरह के एक्सटेंशन को भाषा में लागू किया जाता है (यहां "जी सपोर्ट फॉर जीरो पेज" के रूप में वर्णित है)।


मुझे यह उत्तर पसंद है, लेकिन क्या आपके पास आपकी जानकारी के लिए कोई स्रोत है?
क्लोंडेक्स

1
मैंने अधिक विस्तार और संदर्भ प्रदान करने के लिए उत्तर संपादित किया। वास्तव में यह Freescale के नए HCS08 आर्किटेक्चर से है, लेकिन यह पुराने HC08 और HC05 आर्किटेक्चर के साथ कोड-संगत है। (अब सकारात्मक रूप से प्राचीन) 6800 और 6502 आर्किटेक्चर भी निकटता से संबंधित हैं।
Chromatix

अच्छा लगा, बहुत अच्छा!
क्लोंडेक्स

तो, इसका उपयोग registerकीवर्ड के समान है (उन मामलों के लिए जहां आप वास्तव में सुनिश्चित हैं कि यह वह जगह है जहां आपको अनुकूलन की आवश्यकता है), लेकिन थोड़ा कम चरम?
vsz

ज्यादा या कम। अंतर मुख्य रूप से इस तथ्य के कारण है कि 8-बिट सीपीयू में आमतौर पर प्रति रजिस्टर बैंक नहीं होता है, केवल एक संचायक और सूचकांक रजिस्टर के एक जोड़े होते हैं। लेकिन यह x86 पर "पास" बनाम "दूर" पॉइंटर्स के उपयोग के अनुरूप भी है, इसमें पते के आकार में अंतर है और एक एक्सेस को पूरा करने में कितना समय लगता है।
क्रोमैटिक्स

15

सीपीयू आर्किटेक्चर के आधार पर अलग-अलग पते पर डेटा एक्सेस करने के लिए अलग-अलग निर्देश हो सकते हैं। यहां उनके एक संकलक के लिए केइल से एक उदाहरण दिया गया है

निकट पहुंच की एक निश्चित मेमोरी सीमा होती है, इसलिए आप कंपाइलर को संकेत दे सकते हैं कि वे अक्सर उपयोग किए जाने वाले चर को किसी ऐसे क्षेत्र में रखें जो छोटे निर्देशों द्वारा पहुंच योग्य हो (जाहिर है कि 32-बिट एड्रेस स्पेस तक पहुंच 16-बिट पते से बड़ी है। अंतरिक्ष)। यह छोटे / तेज कोड में अनुवाद कर सकता है।



5
@AndrewMorton: यह प्रश्न मोटे तौर पर अप्रचलित 8086 वास्तुकला पर farऔर nearसंकेत से संबंधित है । 8-बिट माइक्रोकंट्रोलर पर संबंधित लेकिन अलग-अलग फैशन में समान कीवर्ड का उपयोग किया जाता है।
सुपरकैट

@supercat प्रश्न केवल आम तौर पर पूछता है, हालांकि उत्तर पुरानी वास्तुकला पर ध्यान केंद्रित करते हैं। किसी जानकार को इस पर एक उत्तर लिखना चाहिए, जिसमें बताया गया है कि उनका उपयोग 8bit माइक्रोकंट्रोलर के लिए कैसे किया जाता है।
जिज्ञासु ने

@curiousdannii: प्रश्न में कोड 8-बिट माइक्रो के लिए लिखा गया था।
सुपरकैट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.