如何找出架构机器动态实现的指令集?

时间:2014-09-22 05:58:10

标签: operating-system instruction-set

1)我想知道我们是否可以编写一个C程序来了解机器的指令集架构。

2)操作系统如何确定计算机在安装过程中运行的指令集架构(ISA)?如果操作系统要支持两个不同的ISA,那么安装文件是否包含两种体系结构的汇编代码?

1 个答案:

答案 0 :(得分:5)

  

1)我想知道我们是否可以写一个C程序来了解   机器的指令集架构。

C程序需要一些编译器来编译,这会将代码转换为机器语言,这对于Sparc, x86, ARM等不同的体系结构是不同的。因此,如果您不了解架构的指令集,则无法运行C程序。对于不同的体系结构,C二进制文件是不同的。

但是,如果您确定系统架构并且在该系统上使用编译器,则可以做一件事。您可以尝试在不同的操作系统上执行这些指令,以获取有关不同体系结构的详细信息。

您可以使用

获取该机器的系统架构详细信息(而不是指令集详细信息)
  Windows命令提示符(cmd)

set

     unix / linux终端上的

cat /proc/cpuinfo

现在编写一个C程序,在cmd / terminal中执行此命令,具体取决于系统的操作系统。

  

2)操作系统如何找出指令集   计算机在安装过程中运行的架构(ISA)?如果操作系统   是支持两个不同的ISA,安装文件是否包含   两种架构的汇编代码??

操作系统本身由在特定体系结构上运行的预编译二进制文件组成。几乎初始化OS的文件都是直接可执行文件。如果体系结构的指令集与操作系统的二进制文件不兼容,则会报告安装错误!该架构的主要工作是运行这些二进制文件,而不执行任何其他操作。

如果操作系统要支持两个不同的ISA,那么安装它的架构也必须按照操作系统代码中的指示运行这些二进制文件。

下面尝试类比方法。我只是一个学习者,所以我没有太多的汇编/机器级编码经验。我只是凭借我对计算机体系结构和8086编程的了解才尝试过这个问题。

前: -

MOV AX,[76h]    // lets' say opcode is 1001010 10011001, but it is probably wrong

在这里,这是针对x86系统/架构的!它不适合Sparc处理器,因为它具有不同的指令集,因此,您的操作系统不会安装在Sparc处理器上。

我希望这很清楚。如果您仍有疑问,请在下面发表评论!