所有可能更改的统计信息(端口标志regs中断异常等)并将其写入数组(查看和比较)。它计算操作码的长度等等。
可能存在这样的标准测试,例如测试任何给定的处理器。并且没有特别需要无法识别的功能的“魔法揭示”,你可以在网上进行。
答案 0 :(得分:4)
您没有提到要定位的处理器类型。这个答案来自x86的观点,但是其他架构的任务可能也类似。
首先,什么会限制你编写和运行这样的程序?如果您具有root访问权限(可以在x86术语中运行ring0代码),则可以执行以下操作:
jmp
,call
,int
或int3
(在x86处理器中,在其他架构中,说明会有所不同)。cs:ip
(以了解指令失败的地址),您所处的中断等,然后跳转或调用处理代码。然后,在处理代码中,将您想要的所有数据(我认为至少是所有寄存器)发送到某个外部端口,然后在另一台计算机上将所有数据存储在磁盘上。
但是,在x86的情况下,允许的最大指令长度为15个字节。 256 ^ 15 = 1.33 * 10 ^ 36。宇宙的年龄是~4.339 * 10 ^ 17秒。假设10.0 GHz处理器具有单核,每个时钟恰好1个指令(尝试报告它),则需要超过3亿个这样的处理器才能在比当前时间更短的时间内测试所有15字节指令。宇宙:
(256^15)/(10*10^9)/(4.339*10^17) = 306344317
当然,你也需要相当多的存储空间。