#x86-64 #cpuid #disassembler #assume

app iced-cpuid

显示x86/x64二进制文件使用的CPUID功能和指令编码

1 个稳定版本

1.0.0 2021年6月26日

#5#assume

MIT 协议

11KB
161

iced-cpuid GitHub构建

显示x86/x64二进制文件使用的CPUID功能和指令编码。

它假定代码段中的所有字节都是代码。这并不总是正确的。如果您看到一些奇怪的指令,它可能被解码为指令的数据。

先决条件

构建

cargo install iced-cpuid

示例用法

显示/usr/bin/gcc使用的所有CPUID功能

$ iced-cpuid /usr/bin/gcc
CET_IBT
CMOV
SSE
SSE2
XSAVE

显示指令

$ iced-cpuid /usr/bin/gcc -i
CET_IBT
	ENDBR64
CMOV
	CMOVA r32, r/m32
	CMOVA r64, r/m64
	CMOVAE r32, r/m32
[...]
SSE
	MOVAPS xmm1, xmm2/m128
	MOVAPS xmm2/m128, xmm1
	MOVHPS xmm1, m64
[...]

显示指令、操作码和计数

$ iced-cpuid /usr/bin/gcc -ioc
CET_IBT
	788 | F3 0F 1E FA | ENDBR64
CMOV
	5 | o32 0F 47 /r | CMOVA r32, r/m32
	53 | o64 0F 47 /r | CMOVA r64, r/m64
	1 | o32 0F 43 /r | CMOVAE r32, r/m32
[...]
SSE
	1 | NP 0F 28 /r | MOVAPS xmm1, xmm2/m128
	278 | NP 0F 29 /r | MOVAPS xmm2/m128, xmm1
	11 | NP 0F 16 /r | MOVHPS xmm1, m64
[...]

仅显示SSESSE2指令

$ iced-cpuid /usr/bin/gcc -i --cpuid SSE,SSE2
SSE
	MOVAPS xmm1, xmm2/m128
	MOVAPS xmm2/m128, xmm1
	MOVHPS xmm1, m64
	MOVUPS xmm1, xmm2/m128
	MOVUPS xmm2/m128, xmm1
	PREFETCHNTA m8
	PREFETCHT0 m8
	XORPS xmm1, xmm2/m128
SSE2
	ADDSD xmm1, xmm2/m64
	COMISD xmm1, xmm2/m64
	CVTSI2SD xmm1, r/m64
	DIVSD xmm1, xmm2/m64
	MOVAPD xmm1, xmm2/m128
	MOVD xmm, r/m32
[...]

CPUID功能名称

输出中显示的CPUID功能名称字符串以及作为输入使用(--cpuid XXX)与iced-x86中的枚举变体相同,请参阅其源代码或https://docs.rs/iced-x86/(搜索CpuidFeature)。

类似程序

依赖关系

~20MB
~401K SLoC