Pri*_*lia 9 c# python windows cpu cpuid
此代码尝试检索哪些CPU信息.此代码是更大包的一部分.我不是Python程序员,我想将此代码转换为C#.
from ctypes import c_uint, create_string_buffer, CFUNCTYPE, addressof
CPUID = create_string_buffer("\x53\x31\xc0\x40\x0f\xa2\x5b\xc3")
cpuinfo = CFUNCTYPE(c_uint)(addressof(CPUID))
print cpuinfo()
Run Code Online (Sandbox Code Playgroud)
如果您是一名Python程序员并且知道这段代码在做什么,那对我来说将是一个很大的帮助.
Tam*_*ege 24
它执行以下机器代码:
push bx
xor ax, ax
inc ax
cpuid
pop bx
retn
Run Code Online (Sandbox Code Playgroud)
基本上它调用CPU的CPUID指令以获取有关CPU的信息.由于EAX = 1,它获得处理器信息和特征位.然后在屏幕上显示结果32位整数,请参阅维基百科文章或此页面以解码结果.
编辑:因为这是你正在寻找的,这里有一篇关于在.NET/C#环境中调用CPUID 的优秀文章(有点P/Invoke)
除了Dr.Jokepu的回答.python代码是使用ctypes模块实现以下C代码(/ hack):
char *CPUID = "\x53\x31\xc0\x40\x0f\xa2\x5b\xc3"; // x86 code
unsigned int (*cpuid)() = (unsigned int (*)()) CPUID; // CPUID points to first instruction in above code; cast it to a function pointer
printf("%u",cpuid()); // calling cpuid() effectively executes the x86 code.
Run Code Online (Sandbox Code Playgroud)
另请注意,这仅返回EAX中的信息,并且x86代码可能还应该推送/弹出ECX和EDX的值以确保安全.
| 归档时间: |
|
| 查看次数: |
1048 次 |
| 最近记录: |