问题标签 [cpuid]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - C/C++ 如何在 linux 上获取处理器序列号
我想知道如何在 GNU Linux 上可靠地获取处理器序列号 (PSN)。
现在我正在使用这个
它给了我PSN: A7060200FFFBEBBF
,
与
输出:ID: A7 06 02 00 FF FB EB BF
我只在 Intel Core i 处理器上进行了测试,所以也许它只适用于这种类型的 CPU。
我知道“序列号”在相同的 CPU 型号中是相同的,因此不是唯一的。
此外,我期待着一种实现这一目标的方法,它不依赖于执行 shell 命令和解析输出。
assembly - x86 ASM - cpuid 是否设置标志?
x86 CPUID 指令是否会更改标志寄存器?不幸的是,我无法使用调试器。
我在 D 程序中编写了一些 GCC 汇编代码,我想知道是否将“cc”放在 clobbers 中,只是为了安全起见。
ios - 是否有 API 来检测 iOS 上的 CPU 功能?
我有一些具有多种实现的密码学代码,在运行时根据它运行的 CPU 的特性选择哪个实现。到目前为止,移植它一直很简单,Windows、Linux 和 Android 都很容易。
但在 iOS 中,这似乎并不容易。尽管 x86 CPU 具有cpuid
检测功能的指令,即使是在用户模式下,ARM 等效项也具有特权。如果没有操作系统的合作,就无法检测 ARM 上的 CPU 功能。
在 Windows 中,IsProcessorFeaturePresent
用于检测 ARM CPU 功能。在 Linux 上,/proc/cpuinfo
这是要走的路。Android 有一个cpufeatures
库(并且/proc/cpuinfo
仍然可以使用)。Mac OSsysctlbyname
带有hw.optional.*
.
但是iOS呢?iOS 内核hw.optional.*
与 Mac OS 类似,但它在 iOS 10 中被锁定。(因此,我的问题不是这个问题的重复,因为情况已经发生了变化。)此外,获取这些内核似乎很困难 - Apple 的开源网站运行一个自动化流程,从他们公开提供的操作系统源中清除所有 ARM 特定代码,以使越狱者更加努力。
linux-kernel - 如何以未使用的 x86 操作码在 linux KVM 中实现新指令
作为理解虚拟化的一部分,我正在尝试扩展对 KVM 的支持并定义一个新指令。该指令将使用以前未使用的操作码。参考 ref.x86asm.net/coder32.html。
现在,让我们说一个像“CPUID”这样的指令(它会导致 vm-exit),我想添加一个新指令,比如 -“NEWCPUID”,它类似于特权中的“CPUID”并且被管理程序捕获,但会实现方式不同。
浏览了一些网上资源后,我能够理解如何定义新的系统调用,但我不确定我需要在 linux 源代码中的哪些文件中添加 NEWCPUID 的代码?有没有比仅依赖“查找”命令更好的方法?
我面临以下挑战: 1.我需要在linux源代码中的哪些地方添加代码?2. 不确定这条新指令如何映射到以前未使用的操作码?
由于我对这个领域完全陌生并且愿意学习这个,有人可以简单地解释我如何完成这项任务吗?我需要正确的方向来实现这一目标。如果有描述该过程的参考/教程/博客,那将有很大帮助!
assembly - 查询 Intel CPU 中缓存的大小、缓存行大小和关联性
对于 AMD 处理器,有 CPUID 0x8000005u 和 0x8000006u 来收集不同缓存级别的大小、关联性和缓存行大小。
对于 Intel CPU,只有应用笔记 485 有一张不同缓存大小的表格,可以从较低的 cpuid 级别收集。但是这个文件已经很多年没有更新了。
那么有没有一种方便的方法可以从 Intel CPU 获取这些数据?
arm - 如何检查当前 ARM CPU 是否支持 ISA 扩展?
当x86 上的用户空间程序需要判断是否支持例如AVX 扩展时,可以使用CPUID 指令。是否有任何类似的独立于操作系统的方法来检查 ARM 中对 ISA 扩展(例如 NEON)的支持?
virtual-machine - 如何检测软件是否存在虚拟机
我是虚拟机世界的初学者,有一个小问题。如果软件在 VM 上运行(例如 VMware Player),它如何知道它安装在 VM 上?软件是从操作系统获取信息还是软件和硬件(VMware Player)之间有直接通信?先感谢您
assembly - 如何使用 CPUID 指令正确获取 x86 CPU 功能?
我想写一个小程序来获取x86
CPU 的特性。参考CPUID文档后,我发现有几个2
部分:
(1) EAX=1:
(2) EAX=80000001h:
所以这意味着如果 CPU 供应商是GenuineIntel
,我应该使用EAX=1
,如果是AuthenticAMD
,我应该使用EAX=80000001h
来执行CPUID
指令。我的理解正确吗?
gcc - 为什么 __get_cpuid 对 Leaf=4 返回全零?
我想编写一个简单的程序来调用__get_cpuid
以获取缓存信息:
首先,我通过leaf
2:
由于存在0xff
in ebx
,这意味着我可以从leaf=4
(请参阅此处)获取缓存信息:
但这一次,所有返回值都是0
. 为什么我无法从中获取有效信息__get_cpuid
?
x86 - 哪些 x86 ISA 扩展暗示支持以前的 SIMD 扩展?
我的 CPU 支持以下技术:MMX、SSE、SSE2、SSE3、SSSE3、SSE4.1、SSE4.2 和 AVX。
当我编写代码并检查硬件支持时,我是否可以假设“如果处理器支持 AVX,它总是支持所有这些其他技术”?
这些技术中的哪些被认为是其他技术的超集,哪些是独立的,不一定与其他技术打包在一起?