gpt4 book ai didi

在 Visual Studio 2012 Express 中将 C 代码编译为 .bin 文件

转载 作者:行者123 更新时间:2023-11-30 19:48:56 27 4
gpt4 key购买 nike

我想知道是否有一种方法可以设置编译器将我的代码编译成 .bin 文件,该文件只有 1 和 0,没有像 .exe 文件中那样的十六进制代码。我希望代码在处理器上运行,而不是在操作系统上运行。是否有任何设置可以将其设置为 Express 版本中的设置?提前致谢。

最佳答案

“.bin”文件没有什么神奇之处。扩展名通常仅表示二进制文件,但所有文件都是二进制的。因此,您可以通过将链接器生成的“.exe”文件重命名为“.bin”来创建“.bin”文件。

我想您不会对此感到满意,所以我会进一步详细说明。 “.exe”文件扩展名(至少在 Windows 上,我假设是这样,因为您添加了与 Visual Studio 相关的标签)意味着一个具有特殊格式的二进制文件 - Portable Executable ,或简称PE。这是 Windows 操作系统上使用的二进制文件的标准形式,适用于可执行文件和 DLL。

因此,PE 文件是二进制(“.bin”)文件,但具有“.bin”扩展名的未知二进制文件不一定是 PE 文件。您可以采用其他一些二进制文件(例如图像)并将其重命名为具有“.bin”扩展名。它仅包含没有特定格式的二进制位序列。您将无法执行该文件,因为它的格式不正确、可识别。它缺少使其可执行的神奇 PE header 。 C 构建系统默认输出 PE 文件是有原因的:这是唯一对您有用的文件类型。

就像用户1167662在他的comment中所说的那样,十六进制代码没有什么神奇之处。二进制文件中的代码可以用十六进制或二进制格式表示。无论哪种方式,信息都是完全相同的。任何好的文本编辑器(至少是为程序员设计的文本编辑器)都可以使用任一表示形式(或 ASCII 或十进制)打开和显示文件的内容。

I want it to be as low level as possible for optimal performance.

它不存在任何“较低级别”的内容,并且您肯定不会获得任何优化的性能。 PE 文件已经包含直接在微处理器上运行的 native 机器代码。它不像托管代码那样被解释。它包含一系列处理器机器语言的指令。 PE 文件仅包含一个附加 header ,允许操作系统识别并执行它们。这对性能没有影响。

To build an operating system.

现在,这有点不同......特别是,它比编写常规的 Windows 应用程序要困难得多。您还有很多工作要做,因为您不能依赖操作系统来帮助您完成任何事情。您需要深入了解您所针对的底层硬件 - 针对您的 CPU 的开发人员指南/手册将非常有用。

并且您必须获得不同的构建环境。如果您不以可识别的格式创建 PE 文件,Visual Studio 不会给您带来任何好处。其中也不包含 Microsoft 的 C++ 链接器 link.exe。链接器不支持输出“平面”二进制文件(即那些剥离了 PE header 的文件)。您将需要一个不同的链接器。 The GCC toolset can do this 。有一个Windows端口;它被称为 MinGW .

我还推荐一本关于操作系统开发的书。对于 Stack Overflow 问题的回答来说,内容太多了。出于学习目的,我强烈建议使用除 Intel x86 之外的架构。

关于在 Visual Studio 2012 Express 中将 C 代码编译为 .bin 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16159738/

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