एक विशिष्ट सीपीयू आर्किटेक्चर के लिए संकलन
सी या सी कोड लिखते समय, अक्सर उस लक्ष्य सीपीयू आर्किटेक्चर को जानना आवश्यक होता है जिसके लिए आप हैं संकलन. यह जानकारी कोड प्रदर्शन को अनुकूलित करने या विशिष्ट हार्डवेयर के साथ संगतता सुनिश्चित करने के लिए उपयोगी हो सकती है। विभिन्न कंपाइलर सीपीयू आर्किटेक्चर को अलग करने के लिए विभिन्न गैर-मानक प्रीप्रोसेसर परिभाषाओं का उपयोग करते हैं (उदाहरण के लिए, MSVS में _M_X86, i386__, और GCC में __arm)।
मानक जांच विधियां
दुर्भाग्य से, संकलन के समय सीपीयू आर्किटेक्चर का पता लगाने के लिए कोई सार्वभौमिक मानक नहीं है समय। हालाँकि, निम्नलिखित बाहरी फ़ंक्शन कंपाइलरों की एक विस्तृत श्रृंखला के लिए आर्किटेक्चर का पता लगा सकता है:
extern "C" { const char *getBuild() { #if defined(__x86_64__) || defined(_M_X64) return "x86_64"; #elif defined(i386) || defined(__i386__) || defined(__i386) || defined(_M_IX86) return "x86_32"; #elif defined(__ARM_ARCH_2__) return "ARM2"; #elif defined(__ARM_ARCH_3__) || defined(__ARM_ARCH_3M__) return "ARM3"; #elif defined(__ARM_ARCH_4T__) || defined(__TARGET_ARM_4T) return "ARM4T"; #elif defined(__ARM_ARCH_5_) || defined(__ARM_ARCH_5E_) return "ARM5" #elif defined(__ARM_ARCH_6T2_) || defined(__ARM_ARCH_6T2_) return "ARM6T2"; #elif defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_6J__) || defined(__ARM_ARCH_6K__) || defined(__ARM_ARCH_6Z__) || defined(__ARM_ARCH_6ZK__) return "ARM6"; #elif defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) || defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__) || defined(__ARM_ARCH_7S__) return "ARM7"; #elif defined(__ARM_ARCH_7A__) || defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__) || defined(__ARM_ARCH_7S__) return "ARM7A"; #elif defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__) || defined(__ARM_ARCH_7S__) return "ARM7R"; #elif defined(__ARM_ARCH_7M__) return "ARM7M"; #elif defined(__ARM_ARCH_7S__) return "ARM7S"; #elif defined(__aarch64__) || defined(_M_ARM64) return "ARM64"; #elif defined(mips) || defined(__mips__) || defined(__mips) return "MIPS"; #elif defined(__sh__) return "SUPERH"; #elif defined(__powerpc) || defined(__powerpc__) || defined(__powerpc64__) || defined(__POWERPC__) || defined(__ppc__) || defined(__PPC__) || defined(_ARCH_PPC) return "POWERPC"; #elif defined(__PPC64__) || defined(__ppc64__) || defined(_ARCH_PPC64) return "POWERPC64"; #elif defined(__sparc__) || defined(__sparc) return "SPARC"; #elif defined(__m68k__) return "M68K"; #else return "UNKNOWN"; #endif } }
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3