Tim Roberts wrote:
> J wrote:
>
>> On Tue, Jan 5, 2010 at 16:53, Tim Roberts <[email protected]> wrote:
>>
>>
>>
>>> C:\tmp>python
>>> Python 2.6.2 (r262:71605, Apr 14 2009, 22:40:02) [MSC v.1500 32 bit
>>> (Intel)] onwin32
>>> Type "help", "copyright", "credits" or "license" for more information.
>>> >>> import ctypes
>>> >>> c = ctypes.windll.cpuid
>>> >>> hex(c.GetCpuidEcx())
>>> '0x444d4163'
>>> >>> hex(c.GetCpuidEdx())
>>> '0x69746e65'
>>>
>>>
>> Also have to figure out how to decode the hex value into a more user
>> friendly format ;-)
OK, so I was being overly clever, showing off a bit, demonstrating that
it's possible to build a minimal DLL in assembler. It turns out you can
do the same thing in Visual C++:
c:\tmp>type cpuid.c
#include <intrin.h>
int
GetCpuidEcx( int var )
{
int parts[4];
__cpuid( parts, var );
return parts[2];
}
int
GetCpuidEdx( int var )
{
int parts[4];
__cpuid( parts, var );
return parts[3];
}
C:\tmp>cl /LD cpuid.c
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 15.00.21022.08
for 80x86
Copyright (C) Microsoft Corporation. All rights reserved.
cpuid.c
Microsoft (R) Incremental Linker Version 9.00.21022.08
Copyright (C) Microsoft Corporation. All rights reserved.
/out:cpuid.dll
/dll
/implib:cpuid.lib
cpuid.obj
Creating library cpuid.lib and object cpuid.exp
C:\tmp>python
Python 2.6.2 (r262:71605, Apr 14 2009, 22:40:02) [MSC v.1500 32 bit
(Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import ctypes
>>> c = ctypes.cdll.cpuid
>>> c.GetCpuidEcx(1)
1
>>> hex(c.GetCpuidEdx(1))
'0x178bfbff'
>>>
--
Tim Roberts, [email protected]
Providenza & Boekelheide, Inc.
_______________________________________________
python-win32 mailing list
[email protected]
http://mail.python.org/mailman/listinfo/python-win32