日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
C++ cpuid指令正確理解

C++編程語言應(yīng)用范圍非常廣泛,其中有很多功能可以幫助我們實(shí)現(xiàn)一些特定的需求,并在一定程度上提高編程效率。在這里我們會(huì)為大家介紹一下有關(guān)C++ cpuid指令的一些應(yīng)用方法,方便大家理解。#t#

創(chuàng)新互聯(lián)是一家專注于成都網(wǎng)站制作、網(wǎng)站建設(shè)與策劃設(shè)計(jì),開平網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)十余年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:開平等地區(qū)。開平做網(wǎng)站價(jià)格咨詢:18980820575

1、什么是C++ cpuid指令

CPUID指令是intel IA32架構(gòu)下獲得CPU信息的匯編指令,可以得到CPU類型,型號(hào),制造商信息,商標(biāo)信息,序列號(hào),緩存等一系列CPU相關(guān)的東西。

2、C++ cpuid指令的使用

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

 
 
 
  1. __asm  
  2. {  
  3. mov eax, 1  
  4. cpuid  
  5. ...  

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

 
 
 
  1. typedef unsigned long DWORD  
  2. class CPUID  
  3. {  
  4. public:  
  5. ...  
  6. private:  
  7. void Executecpuid(DWORD eax); // 用來實(shí)現(xiàn)cpuid  
  8. DWORD m_eax; // 存儲(chǔ)返回的eax  
  9. DWORD m_ebx; // 存儲(chǔ)返回的ebx  
  10. DWORD m_ecx; // 存儲(chǔ)返回的ecx  
  11. DWORD m_edx; // 存儲(chǔ)返回的edx  
  12. ...  
  13. }  
  14. void CPUID::Executecpuid(DWORD veax)  
  15. {  
  16. // 因?yàn)榍度胧降膮R編代碼不能識(shí)別 類成員變量  
  17. // 所以定義四個(gè)臨時(shí)變量作為過渡  
  18. DWORD deax;  
  19. DWORD debx;  
  20. DWORD decx;  
  21. DWORD dedx;  
  22. __asm  
  23. {  
  24. mov eax, veax ;將輸入?yún)?shù)移入eax  
  25. cpuid ;執(zhí)行cpuid  
  26. mov deax, eax ;以下四行代碼把寄存器中的變量存入臨時(shí)變量  
  27. mov debx, ebx  
  28. mov decx, ecx  
  29. mov dedx, edx  
  30. }  
  31. m_eax = deax; // 把臨時(shí)變量中的內(nèi)容放入類成員變量  
  32. m_ebx = debx;  
  33. m_ecx = decx;  
  34. m_edx = dedx;  

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


標(biāo)題名稱:C++ cpuid指令正確理解
新聞來源:http://www.5511xx.com/article/djejssh.html