क्या ऐसा कोई सरणी बनाना संभव है जो 256 बाइट सीमा पार न करे? यह अलग-अलग सरणी वस्तुओं के पते केवल निचले बाइट में भिन्न होते हैं। सरणी को 256 बाइट्स के साथ गठबंधन रखने की तुलना में यह कमजोर आवश्यकता है। एकमात्र समाधान जिसे मैं सोच सकता था next_power_of_two(sizeof(array))
पर संरेखित कर रहा था, लेकिन मुझे इस तरह के अंतराल के बारे में निश्चित नहीं है।ऐरे 256 बाइट सीमा पार नहीं कर रहा
यह एवीआर माइक्रोकंट्रोलर के लिए लाइब्रेरी के लिए है, और यह मुझे एक इंटरप्ट हैंडलर में कुछ मूल्यवान निर्देशों को बचाएगा। इस संपत्ति के पास यह सार होना चाहिए जो कुल स्थिर स्मृति के लगभग 80 बाइट्स से 54 बाइट लंबा है पुस्तकालय। मैं ऐसे तरीके की तलाश में हूं जो स्मृति आवश्यकताओं को बढ़ाएगा।
मैं avr-gnu assembler और avr-ld लिंकर के रूप में उपयोग कर रहा हूं।
उदाहरण: यदि सरणी 0x00f0 पते पर शुरू होती है, तो सरणी को घुमाने के दौरान उच्च शब्द 0x00 से 0x01 में बदल जाएगा।
मुझे सच में परवाह नहीं है कि यह पता 0x0100 या 0x0101 पर शुरू होता है जब तक यह सीमा पार नहीं करता है।
आपको सरणी के पते को गठबंधन करने की आवश्यकता है? यह आपके निर्देश गणना को कैसे कम करता है क्योंकि आप पहले ही जानते हैं कि सरणी <= 256 तत्व है? – MSN
मुझे इसे गठबंधन रखने की आवश्यकता नहीं है। मैंने जो उदाहरण जोड़ा है उसे देखें। – cube
नोट हालांकि कि सरणी को ** ** ** ** बाइट सीमा से गठबंधन करना आपकी आवश्यकताओं को पूरा करेगा - आपका लिंकर * इन आवंटन को सॉर्ट करने में सक्षम होना चाहिए ताकि आपको बर्बाद स्मृति न मिल सके। –