是否可以使用 ARM CPU 模拟器运行 C 文件?

是否可以使用 ARM CPU 模拟器运行 C 文件?

我有一个想法,即模拟 ARM CPU 来运行不同的程序。首先,我想模拟 CPU 并运行例如用 C 编写的简单“hello world”。

遗憾的是,我使用 Google 等工具没有找到答案。

是否可以使用 ARM CPU 模拟器运行 C 文件?

我想到模拟一个没有 GUI 的 CPU——只使用我想要运行 C 文件的命令行。

答案1

答案是否定的。CPU 只理解 CPU 指令,也就是汇编语言。当你有一个 C 文件,并且想要运行它时,你需要一个解释器来让 CPU 理解脚本。这意味着脚本被编译成二进制可执行文件,它是 CPU 可以理解的汇编指令列表。

但是如果你的 CPU 模拟器有某种接口和操作系统,那么你可以使用该操作系统来运行编译器,在这种情况下,你可以通过编译器运行 C 文件。但是操作系统是你想要避免的 GUI,所以……这让我回到第一段。

答案2

您的问题是,您是否可以在与您正在使用的机器不同的 CPU 架构上测试给定的 C 文件。例如,您可能有一台配备 Intel 处理器的 Windows 机器,但想在 ARM 平台上试用该程序。这当然可以做到。

需要注意的是,C 代码永远不会运行直接地在 CPU 上;它首先必须被翻译(编译)成机器码因为不同的平台需要不同的机器代码来做同样的事情。这就是编译器的作用。

你可以告诉编译器将你的代码编译到不同的目标平台上。这称为交叉编译这篇博文例如,描述了如何使用arm-linux-gnueabi-gcc编译器(你可以在 Ubuntu 下从 获取apt install gcc-arm-linux-gnueabi)将 Hello World 程序交叉编译到 ARM。

我应该补充一点,在 Linux 主机下做这些事情比在 Windows 下要容易一些,但也许这只是个人偏见。

交叉编译完程序后,您可能想在目标平台上测试它。为此,您当然需要一个 CPU 模拟器,但仅有该模拟器是不够的,因为您需要一个操作系统,*它可以加载相应编译的 C 程序并将其作为进程执行。ARM 实验室虚拟机为 ARM 实现该功能。它是一个虚拟机,可在任何主机平台上模拟 ARM 平台。

*除非该程序本身“裸机”,这意味着它不需要中间操作系统即可运行。

相关内容