草庐IT

java - 在Windows上使用JNA调用__cpuid函数

我需要用Java获取处理器信息(供应商、型号等)。我通常会使用C/C++,但不幸的是,对于我当前的项目,这必须在Java中完成。我正在使用JNA进行native访问,并且我已声明我的JNALibrary如下:publicinterfaceCLibraryextendsLibrary{publicvoid__cpuid(int[]CPUInfo,intInfoType);}我正在尝试这样调用:CLibraryc=(CLibrary)Native.loadLibrary("msvcrt",CLibrary.class);int[]CPUInfo=newint[4];c.__cpuid(CP

c++ - i5-2500k 上的 cpuid 指令 : MMX, SSE,SSE2 位未设置

这是预期的吗?我希望我的SandyBridgeCPU报告它可以处理MMX、SSE和SSE2指令。这些位是否未设置是因为这些“旧”指令集已被一些较新的指令集“取代”?我用了thiscodehere将CPU检测放入我的代码中。#include"CPUID.h"intmain(intargc,char*argv[]){CPUIDcpuid;cpuid.load(0);printf("CPU:%.4s%.4s%.4s",(constchar*)&cpuid.EBX(),(constchar*)&cpuid.EDX(),(constchar*)&cpuid.ECX());charbrand[0x

c++ - 如何在 Linux 中调用 "cpuid"?

在为Windows编写新代码时,我偶然发现了来自WindowsAPI的_cpuinfo()。因为我主要处理Linux环境(GCC),所以我想访问CPUInfo。我尝试了以下方法:#includeintmain(){inta,b;for(a=0;a这使用了程序集,但我不想重新发明轮子。有没有其他不用汇编实现CPUInfo的方法? 最佳答案 由于您使用GCC进行编译,因此您可以包含声明以下函数的cpuid.h:/*Returnhighestsupportedinputvalueforcpuidinstruction.extcanbeei

Windows上获取cpu info, cpuid, cpu id 方法整理

1.使用cmd获取cpuid   在CMD中输入如下命令:wmiccpugetprocessorid2.使用源代码编译获取cpuid:(借码)三个源代码文件调试通过原文链接1原文链接2//get_cpu_id.h//get_cpu_id.h#pragmaonce#include#include#include#include//samefunctionas:  wmiccpugetprocessoridclassCGetCPUId{public:  CGetCPUId();  virtual~CGetCPUId();public:  std::string         GetId();};

linux - QEMU 调试::警告:TCG 不支持请求的功能:CPUID.01H:ECX

我想使用QEMU在Ubuntu16.04.3LTS上调试我编译的内核linux-4.13.4我遵循以下步骤:1安装qemusudoapt-getinstallqemu2运行qemuqemu-system-x86_64-s-S-kernel/home/wxf/kernelSources/linux-4.13.4/arch/x86_64/boot/bzImage-initrd/boot/initrd.img-4.13.4注意:-sshorthandfor-gdbtcp::1234-SfreezeCPUatstartup(use'c'tostartexecution)但我收到以下警告:war

linux - QEMU 调试::警告:TCG 不支持请求的功能:CPUID.01H:ECX

我想使用QEMU在Ubuntu16.04.3LTS上调试我编译的内核linux-4.13.4我遵循以下步骤:1安装qemusudoapt-getinstallqemu2运行qemuqemu-system-x86_64-s-S-kernel/home/wxf/kernelSources/linux-4.13.4/arch/x86_64/boot/bzImage-initrd/boot/initrd.img-4.13.4注意:-sshorthandfor-gdbtcp::1234-SfreezeCPUatstartup(use'c'tostartexecution)但我收到以下警告:war

c# - C# 中的 x86/x64 CPUID

与myotherquestion相关,请帮助我调试“未知模块中发生类型为‘System.AccessViolationException’的未处理异常。附加信息:尝试读取或写入protected内存。这通常表明其他内存已损坏。”单步执行代码,一切正常,直到实际调用del()并在该行失败。此代码基于此article'ssample还有这个pythoncode在python中工作。我也无法让代码示例按原样工作(同样的异常(exception)),但我希望它只是有点过时了。编辑:如果您关心我们如何到达这里,请查看编辑历史,这很无趣。完成的工作版本:publicstaticclassCpuID

c++ - CPUID 的内在信息之类的信息?

考虑到我正在使用C++进行编码,如果可能的话,我想使用类似Intrinsics的解决方案来阅读有关硬件的有用信息,我的担忧/考虑是:我对汇编不太了解,仅获取此类信息将是一笔可观的投资(虽然它看起来像CPU,但它只是关于翻转值和读取寄存器。)至少有2种流行的asm语法(Intel和AT&T),所以它是零散的奇怪的是,如今Intrinsics比asm代码更受欢迎和受支持目前我所关注的并非所有编译器都支持内联asm,MSVC64位就是其中之一;恐怕我在深入挖掘我必须使用的不同编译器的功能集时会发现其他类似的缺陷。考虑到我认为押注Intrinsics对我来说更有效率,它也应该比任何asm代码更

c++ - rdtscp、rdtsc : memory and cpuid/rdtsc? 的区别

假设我们正在尝试使用tsc进行性能监控,并且我们希望防止指令重新排序。这些是我们的选择:1:rdtscp是一个序列化调用。它可以防止围绕对rdtscp的调用进行重新排序。__asm____volatile__("rdtscp;"//serializingreadoftsc"shl$32,%%rdx;"//shifthigher32bitsstoredinrdxup"or%%rdx,%%rax"//andorontorax:"=a"(tsc)//outputtotscvariable::"%rcx","%rdx");//rcxandrdxareclobbered但是,rdtscp仅在较新

c++ - C++ 中的 CPUID 实现

我想知道这里是否有人有一些C++CPUID实现的好例子,可以从任何托管的.net语言中引用。另外,如果不是这样,我应该注意X86和X64之间的某些实现差异吗?我想使用CPUID来获取运行我的软件的机器上的信息(崩溃报告等...),并且我想保持一切尽可能广泛兼容。我问的主要原因是,虽然我对CPU寄存器等有基本的了解,但在编写可能都是机器指令时,我是一个完全的菜鸟……在人们开始告诉我Google之前:我在网上找到了一些示例,但通常它们并不意味着允许来自托管代码的交互,而且这些示例都不是针对X86和X64的。大多数示例似乎是特定于X86的。 最佳答案
12