共享指令集的 2 个处理器存在什么样的二进制兼容性?. 我曾在 Computer Science Stack Exchange 上问过一个问题,得到的答案是:
作为一个小问题,您可以编写一个程序,尝试打印它在哪个处理器上运行、多少个内核、多少内存等等。这样的程序显然应该在 x86 和 AMD CPU 上产生不同的结果。
我不知道如何用任何编程语言或汇编代码编写一个正确打印处理器名称的程序。这样的程序将在 Intel i3-3220 机器上打印“Intel i3-3220”,在 AMD Ryzen 5000 机器上打印“AMD Ryzen 5000 ...”(不知道确切的型号名称)。由于两个处理器都是二进制兼容的,我应该能够编写一个在它们上运行的程序而无需重新编译。如果存在打印处理器名称的程序,则必须首先检测处理器。当然,它可以向操作系统询问处理器名称,但这与编写程序检测 CPU 型号不同。我不认为这样的程序存在。但操作系统正确检测到 CPU 型号。
Ubuntu 对 AMD 和 Intel x86-64 处理器使用相同的操作系统。只有一个 x86-64 位版本可用,称为 AMD64,可在 AMD 和 Intel x86-64 机器上运行。操作系统如何使用相同的二进制兼容程序检测 CPU 型号?