gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-05 01:02:43 24 4
gpt4 key购买 nike

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

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

最佳答案

1) I would like to know if we could write a C program to know about the instruction set architecture of the machine.



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

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

您可以通过使用获取该机器的系统架构详细信息(而不是指令集详细信息)

set on Windows command prompt(cmd)

cat /proc/cpuinfo on unix/linux terminal



现在根据系统的操作系统编写一个 C 程序来在 cmd/终端中执行此命令。

2) How does the operating system figure out what Instruction Set Architecture(ISA) the computer runs on during installation? If the OS was to support two different ISA, does the installation file contains assembly code for both the architectures??



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

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

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

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

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

我希望这很清楚。如果您还有疑问,请在下方留言!

关于operating-system - 如何找出动态实现的指令集架构机器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25967497/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com