ÈçºÎÓà DELPHI »ñÈ¡ CPU µÄÐòÁкÅ
ÔÚ¶àCPU»ò¶àºËCPUÖУ¬»áËæ»úµÄ»ñµÃ²»Í¬µÄÐòÁкÅ.Õâ¾ÍΪÎÒÃǸù¾ÝCPUÐòÁкÅÀ´ÖÆ×÷×¢²á»ú´øÀ´Á˺ܴóµÄÂé·³¡£
Windows 2000/XPÔÊÐíÉèÖýø³ÌºÍÏ̵߳ĹØÏµ¡£»»¾ä»°Ëµ£¬¿ÉÒÔ¿ØÖÆÄĸö CPU Äܹ»ÔËÐÐijЩÏ̡߳£Õâ³ÆÎªAffinity Mask¡£WindowsÌṩÁËÉèÖÃÏàËÆÐԵĺ¯ÊýSetProcessAffinityMask £¬Ê¹ÓÃËü¿É¿ØÖÆ»ñȡָ¶¨CPUµÄÐòÁкš£
1¡¢ÈçºÎ»ñµÃcpuµÄÐòÁкš£
ʹÓÃcpuidÖ¸ÁîÀ´»ñÈ¡¡£
ÔÚµ÷ÓÃCPUID֮ǰ£¬EAXÖдæ·ÅµÄÊǹ¦ÄÜ´úÂë¡£ÔÚµ÷ÓÃCPUIDÖ®ºó£¬EAX,EBX,ECX,EDX´æ·ÅµÄÊÇCPUµÄ¸÷ÖÖÌØÕ÷ÐÅÏ¢¡£ÕâЩÐÅÏ¢Ò²¾ÍÊÇÎÒÃÇͨ³£Ëù˵µÄCPUÐòÁкš£
1¡¢ÈçºÎ»ñµÃcpuµÄÐòÁкÅ?
ÎÒÃÇ¿ÉÒÔʹÓÃʹÓÃCPUIDÖ¸ÁîÀ´»ñÈ¡¡£
ÔÚµ÷ÓÃCPUID֮ǰ£¬EAXÖдæ·ÅµÄÊǹ¦ÄÜ´úÂë¡£ÔÚµ÷ÓÃCPUIDÖ®ºó£¬EAX,EBX,ECX,EDX´æ·ÅµÄÊÇCPUµÄ¸÷ÖÖÌØÕ÷ÐÅÏ¢¡£ÕâЩÐÅÏ¢Ò²¾ÍÊÇÎÒÃÇͨ³£Ëù˵µÄCPUÐòÁкš£
MOV EAX, 0 //»ñÈ¡ÖÆÔìÉÌÐÅÏ¢
CPUID
Mov EAX, 1 //»ñµÃCPUµÄÐòÁкÅ
CPUID
ÏÂÃæ½«ÌṩÈý¸öº¯Êý¹©²Î¿¼£º
function NewCPUID: string;
const
CPUINFO = 'CPUÖÆÔìÉÌ: %S ÐòÁкÅ: %x';
var
s: array[0..19] of Char;
MyCpuID: Integer;
begin
FillChar(s, 20, 0);
asm
push ebx
push ecx
push edx
mov eax, 0
cpuid
mov dword ptr s[0], ebx
mov dword ptr s[4], edx
mov dword ptr s[8], ecx
mov eax, 1
cpuid
mov MyCpuID, edx
pop edx
pop ecx
pop ebx
end;
Result := Format(CPUINFO, [s, MyCpuID]);
end;
function GetCPUID: TCPUID; assembler; register;
asm
PUSH EBX {Save affected register}
PUSH EDI
MOV EDI, EAX [email={@Resukt]{@Resukt[/email]}
MOV EAX, 1
DW $A20F {CPUID Command}
STOSD {CPUID[1]}
MOV EAX, EBX
STOSD {CPUID[2]}
MOV EAX, ECX
STOSD {CPUID[3]}
MOV EAX, EDX
STOSD {CPUID[4]}
POP EDI {Restore registers}
POP
Ïà¹ØÎĵµ£º
¹ØÓÚdelphi Assigned
1.¸ù¾Ý Delphi Ö¸Áî²Î¿¼ÊÖ²áÖÐ
˵Ã÷£º
Assigned º¯Ê½ÔÚ²ÎÊý²»Îªnilʱ´«»ØTrue,±íʾָÕëÒѾָµ½Ä³¸öÄÚ´æµØÖ·£¬Õâ¸öÄÚ´æµØÖ·¿ÉÄÜÊÇÒ»¸ö¶ÔÏóµØÊ×µØÖ·£¬Ò²¿ÉÄÜÔÚº¯Êý»ò¹ý³ÌÖУ¬ÉùÃ÷Ò»¸öÖ¸Õë±äÁ¿£¬Ã»Óи³ÖµÎªnil £¬ÎÞÂÒµÄÖ¸Ïòij´¦£¬ÕâÁ½¸öÖÖÇé¿ö£¬Assigned£¨Ö¸Õë±äÁ¿£©¶¼²»Îªnil , º¯Êý·Å»ØTrue£»
¶ø² ......
»¥³âÁ¿ÊÇϵͳÄں˶ÔÏó£¬ËÓµÓоÍËÖ´ÐС£ËüÓëÁÙ½çÇø¹¤×÷ºÜÀàËÆ¡£²»Í¬´¦ÔÚÓÚ£º1¡¢»¥³âÁ¿¿ÉÒÔ¿ç½ø³Ì±ß½çͬ²½Ï̡߳£2¡¢¿ÉÒÔ¸ø»¥³âÁ¿È¡¸öÃû×Ö£¬Í¨¹ýÒýÓû¥³âÁ¿µÄÃû×ÖÀ´Ê¹ÓÃÒ»¸öÒÑÖªµÄ»¥³âÁ¿¶ÔÏó¡£
ʹÓû¥³âÁ¿Ö®ÀàµÄ¶ÔÏóÐèÒª·´¸´µ÷ÓÃϵͳÄںˣ¬ÆÚ¼äÐèÒª½øÐнø³ÌÉÏÏÂÎÄת»»ºÍ¿ØÖƼ¶±ðת»»£¬´ó¸ÅÐèÒªºÄ· ......
ÔÚDelphiÖеÄRecordÀàÐÍÖУ¬ÓëÖ®CÓïÑÔ¶ÔÓ¦µÄ¼´ÊǽṹÌåÀàÐÍ£¨struct
£©£¬Ò²¿ÉÄÜÊÇΪÁË·ûºÏCÓïÑÔ»òC++³ÌÐòÔ±µÄϰ¹ß£¬¶ÔÓÚËüÔÚDelphiÖеÄÓ¦ÓôæÔÚµÄһЩÎÊÌâ½øÐгõ²½µÄ˵Ã÷¡£ÔÚDelphiÖеļǼÌåÀàÐÍÓÐÁ½ÖÖ·½Ê½¶¨Òå
Type
RecTest = record (packed
)
ID :integer; ......
DelphiµÄVCL¿ò¼ÜÔÚ´´½¨Ó¦ÓÃʱTApplicationÊÇÒ»¸ö×Ô¶¯´´½¨µÄÒþ²Ø´°¿Ú£¬ÆäËü´´½¨µÄ´°¿ÚÊÇ×Ô¶¯ÒԸô°¿ÚΪ´°¿Ú£¬Õâ¾Íµ¼Ö´´Ê¼µÄÖ÷´°¿ÚÔÚÈÎÎñÀ¸µÄϵͳ²Ëµ¥Ö»ÓÐÈýÏֻҪÔÚÖ÷´°¿ÚµÄCreateʼþÖн«ÏµÍ³²Ëµ¥ÓÃApplicationµÄϵͳ²Ëµ¥Ìæ»»£¬²¢½«SysCommandÏûϢת·¢µ½Ö÷´°¿Ú¾ÍÕý³£ÁË¡£
unit Unit1;
interface
uses
Windows ......
1.SHIFT+Êó±ê×ó¼ü ÏÈÑ¡ÖÐÈÎÒ»¿Ø¼þ,°´¼üºó¿ÉÑ¡Öд°Ìå(Ñ¡Öпؼþºó°´EscЧ¹ûÒ»Ñù)
2.Shift+F8 µ÷ÊÔʱµ¯³öCPU´°¿Ú¡£
3.Shift+F10 µÈÓÚÊó±êÓÒ¼ü£¨Windows¿ì½Ý¼ü£©¡£
&n ......