真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

C++中如何使用cpuid指令

這篇文章將為大家詳細講解有關C++ 中如何使用cpuid指令,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

10年積累的成都做網(wǎng)站、成都網(wǎng)站制作、成都外貿(mào)網(wǎng)站建設經(jīng)驗,可以快速應對客戶對網(wǎng)站的新想法和需求。提供各種問題對應的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡服務。我雖然不認識你,你也不認識我。但先網(wǎng)站設計后付款的網(wǎng)站建設流程,更有平和免費網(wǎng)站建設讓你可以放心的選擇與我們合作。

1、什么是C++ cpuid指令

CPUID指令是intel IA32架構下獲得CPU信息的匯編指令,可以得到CPU類型,型號,制造商信息,商標信息,序列號,緩存等一系列CPU相關的東西。

2、C++ cpuid指令的使用

cpuid使用eax作為輸入?yún)?shù),eax,ebx,ecx,edx作為輸出參數(shù),舉個例子:

__asm  {  mov eax, 1  cpuid  ...  }

以上代碼以1為輸入?yún)?shù),執(zhí)行cpuid后,所有寄存器的值都被返回值填充。針對不同的輸入?yún)?shù)eax的值,輸出參數(shù)的意義都不相同。為了更好的在C++中使用cpuid指令,可以使用類對指令進行封裝,在類中定義一個專門的函數(shù)負責cpuid的執(zhí)行,他需要一個輸入?yún)?shù)。還需要定義四個成員變量存儲C++ cpuid指令執(zhí)行以后返回來的值。由于這四個寄存器都是32位長的,可以使用unsinged long 類型變量存儲。

typedef unsigned long DWORD  class CPUID  {  public:  ...  private:  void Executecpuid(DWORD eax); // 用來實現(xiàn)cpuid  DWORD m_eax; // 存儲返回的eax  DWORD m_ebx; // 存儲返回的ebx  DWORD m_ecx; // 存儲返回的ecx  DWORD m_edx; // 存儲返回的edx  ...  }  void CPUID::Executecpuid(DWORD veax)  {  // 因為嵌入式的匯編代碼不能識別 類成員變量  // 所以定義四個臨時變量作為過渡  DWORD deax;  DWORD debx;  DWORD decx;  DWORD dedx;  __asm  {  mov eax, veax ;將輸入?yún)?shù)移入eax  cpuid ;執(zhí)行cpuid  mov deax, eax ;以下四行代碼把寄存器中的變量存入臨時變量  mov debx, ebx  mov decx, ecx  mov dedx, edx  }  m_eax = deax; // 把臨時變量中的內容放入類成員變量  m_ebx = debx;  m_ecx = decx;  m_edx = dedx;  }

這樣就可以通過直接調用Executecupid()函數(shù)的方式來執(zhí)行C++ cpuid指令了,返回值存在類成員變量m_eax, m_ebx, m_ecx和m_edx中。

關于C++ 中如何使用cpuid指令就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。


當前題目:C++中如何使用cpuid指令
分享URL:http://weahome.cn/article/pcppsj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部