Mengakses Maklumat CPU pada Linux Menggunakan Arahan cpuid
Dalam soalan ini, pembangun berusaha untuk mengakses maklumat CPU dalam persekitaran Linux menggunakan kaedah serupa dengan fungsi _cpuinfo() dalam API Windows. Kod yang disediakan cuba menggunakan arahan pemasangan (cpuid) untuk mendapatkan maklumat ini, tetapi pembangun ingin mengelakkan keperluan untuk pemasangan manual.
Penyelesaian terletak pada menggunakan fail pengepala cpuid.h yang tersedia semasa menyusun kod dengan GCC. Pengepala ini mengisytiharkan dua fungsi:
<code class="c">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);</code>
Fungsi __get_cpuid_max mengembalikan nilai input yang disokong tertinggi untuk arahan cpuid. Anda boleh menentukan __ext sebagai sama ada 0x0 untuk maklumat asas atau 0x8000000 untuk maklumat lanjutan.
Fungsi __get_cpuid mendapatkan semula maklumat CPU untuk tahap tertentu dan mengembalikan data dalam daftar eax, ebx, ecx dan edx. Ia mengembalikan nilai bukan sifar jika berjaya dan sifar jika tahap yang diminta tidak disokong.
Contoh Penggunaan:
<code class="c">#include <stdio.h> #include <cpuid.h> 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 <= max_level; level++) { // Retrieve CPUID data for the current level __get_cpuid(level, &eax, &ebx, &ecx, &edx); printf("Level %u: EAX=%u, EBX=%u, ECX=%u, EDX=%u\n", level, eax, ebx, ecx, edx); } return 0; }</code>
Atas ialah kandungan terperinci Bagaimana untuk Mengakses Maklumat CPU dalam Linux Menggunakan Arahan `cpuid`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!