सीपीयूआईडी निर्देश का उपयोग करके लिनक्स पर सीपीयू जानकारी तक पहुंच
इस प्रश्न में, एक डेवलपर एक का उपयोग करके लिनक्स वातावरण में सीपीयू जानकारी तक पहुंचना चाहता है Windows API में _cpuinfo() फ़ंक्शन के समान विधि। प्रदान किया गया कोड इस जानकारी को पुनः प्राप्त करने के लिए असेंबली निर्देशों (सीपीयूआईडी) का उपयोग करने का प्रयास करता है, लेकिन डेवलपर मैन्युअल असेंबली की आवश्यकता से बचना चाहता है।
इसका समाधान कोड संकलित करते समय उपलब्ध cpuid.h हेडर फ़ाइल का उपयोग करने में निहित है। जीसीसी. यह हेडर दो फ़ंक्शन घोषित करता है:
unsigned int __get_cpuid_max(unsigned int __ext, unsigned int *__sig);
int __get_cpuid(unsigned int __level, unsigned int *__eax, unsigned int *__ebx, unsigned int *__ecx, unsigned int *__edx);
__get_cpuid_max फ़ंक्शन cpuid निर्देश के लिए उच्चतम समर्थित इनपुट मान लौटाता है। आप बुनियादी जानकारी के लिए __ext को 0x0 या विस्तारित जानकारी के लिए 0x8000000 के रूप में निर्दिष्ट कर सकते हैं।
__get_cpuid फ़ंक्शन एक निर्दिष्ट स्तर के लिए CPU जानकारी पुनर्प्राप्त करता है और डेटा को eax, ebx, ecx और edx रजिस्टरों में लौटाता है। सफल होने पर यह गैर-शून्य मान देता है और यदि अनुरोधित स्तर समर्थित नहीं है तो शून्य देता है।
उपयोग उदाहरण:
#include
#include
int main() {
unsigned int eax, ebx, ecx, edx;
// Get maximum supported CPUID level
unsigned int max_level = __get_cpuid_max(0x0, NULL);
// Iterate over different CPUID levels
for (unsigned int level = 0; level
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3