Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Mengakses Maklumat CPU dalam Linux Menggunakan Arahan `cpuid`?

Bagaimana untuk Mengakses Maklumat CPU dalam Linux Menggunakan Arahan `cpuid`?

Linda Hamilton
Linda Hamiltonasal
2024-10-31 11:56:02903semak imbas

How to Access CPU Information in Linux Using the `cpuid` Instruction?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn