「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > 「cpuid」命令を使用してLinuxでCPU情報にアクセスする方法?

「cpuid」命令を使用してLinuxでCPU情報にアクセスする方法?

2024 年 11 月 9 日に公開
ブラウズ:932

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

cpuid 命令を使用した Linux 上の CPU 情報へのアクセス

この質問では、開発者は、cpuid 命令を使用して Linux 環境の CPU 情報にアクセスしようとしています。 Windows API の _cpuinfo() 関数に似たメソッド。提供されたコードは、アセンブリ命令 (cpuid) を利用してこの情報を取得しようとしますが、開発者は手動アセンブリの必要性を避けたいと考えています。

解決策は、コードをコンパイルするときに使用できる cpuid.h ヘッダー ファイルを利用することです。 GCC。このヘッダーは 2 つの関数を宣言しています:

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