在Linux 上使用cpuid 指令存取CPU 資訊
在這個問題中,開發人員試圖在Linux 環境中使用方法類似於Windows API 中的_cpuinfo() 函數。提供的程式碼嘗試利用彙編指令 (cpuid) 來檢索此訊息,但開發人員希望避免手動彙編的需要。
解決方案在於利用編譯程式碼時可用的 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 max max 指令支援的最高輸入值。您可以將 __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