[python-win32] Still looking for a method to get CPUID info ...
Dave Angel
davea at ieee.org
Fri Jan 8 15:29:46 CET 2010
Gertjan Klein wrote:
> Tim Roberts wrote:
>
>
>> However, I'll bet I know what it is. CPUID trashes ebx, and in the x86
>> calling sequence, that's supposed to be saved and restored.
>>
>
> That's it! Now, both Python 2.5 and 2.6 (and 3.1, if I change the print
> statement) run this code successfully. Does that mean there is a
> difference in calling sequence between Python 2.5 and 2.6? Or do they
> have different expectations of which registers are left untouched?
>
> Thanks for sticking with this. I often save little bits of code from
> this newsgroup that I might want to use later, and now I have a little
> project that shows me how to create a DLL from assembly code and call it
> from Python.
>
> Gertjan.
>
>
>
On general principle, I'd use
push ebx
...
pop ebx
pairs around the cpuid instruction, if trashing ebx is a problem. Seems
to me it's safer than making any assumptions about implicit
saves/restores. I haven't looked at the cpuid instruction for years,
but I'd push/pop any register (other than EAX) it modifies, and in
between them do the cpuid and an appropriate move of whichever register.
DaveA
More information about the python-win32
mailing list