我想知道是否有一种方法可以设置编译器将我的代码编译为只包含1和0的.bin文件,不需要十六进制代码一个.exe文件。我想让代码在处理器上运行,而不是操作系统。是否有任何设置将其设置为Express版本中的设置?提前致谢。在Visual Studio 2012 Express中将C代码编译到.bin文件中
回答
“.bin”文件没有什么魔力。扩展名一般只是表示一个二进制文件,但所有文件都是二进制文件。因此,您可以通过将链接器生成的“.exe”文件重命名为“.bin”来创建“.bin”文件。
我认为你不会对此感到满意,所以我会详细说明一下。 “.exe”文件扩展名(至少在Windows上,我假设你已经添加了一个与Visual Studio相关的标记),这意味着一个带有特殊格式的二进制文件,简称为Portable Executable。这是Windows操作系统上使用的二进制文件的标准格式,包括可执行文件和DLL。
所以一个PE文件是一个二进制(“.bin”)文件,但是一个带有“.bin”扩展名的未知二进制文件并不是必然一个PE文件。你可以采取一些其他的二进制文件(如图像),并将其重命名为“.bin”扩展名。它只是包含一个没有特定格式的二进制位序列。您将无法执行该文件,因为它的格式不正确。它缺乏使其可执行的神奇PE头。 C编译系统默认输出PE文件是有原因的:这是唯一对您有用的文件类型。
而像user1167662在他的comment中所说的,关于十六进制代码没有什么不可思议的。二进制文件中的代码可以用或十六进制或二进制格式表示。无论哪种方式,都是完全一样的信息。任何好的文本编辑器(至少为程序员设计的)都可以使用表示(或ASCII或十进制)打开和显示文件的内容。
我希望它尽可能低,以获得最佳性能。
它没有什么“更低的水平”,你当然不会得到任何优化的性能。 PE文件已经包含直接在微处理器上运行的本机机器码。它不像托管代码那样被解释。它包含处理器机器语言中的一系列指令。 PE文件只包含一个额外的头文件,允许它们被操作系统识别和执行。这对性能没有影响。
构建操作系统。
现在,这有点不同了…特别是,这比编写常规的Windows应用程序要困难得多。你有一个很多工作在你面前,因为你不能依靠操作系统来做任何事情来帮助你。您需要了解您所针对的底层硬件 - 开发人员的指南/手册对您的CPU非常有用。
而且你必须得到一个不同的构建环境。如果您没有使用识别的格式创建PE文件,Visual Studio不会对您有所帮助。微软的C++链接程序也不包含在内,link.exe
。链接器不支持输出“扁平”二进制文件(即剥去PE标头的文件)。你将需要一个不同的链接器。 The GCC toolset can do this。有一个Windows端口;它被称为MinGW。
我也推荐一本关于操作系统开发的书。在堆栈溢出问题的答案中覆盖太多了。而对于学习目的,我强烈建议使用Intel以外的架构。
- 1. Visual Studio 2012将.c文件编译为cpp文件
- 2. Visual Studio Express 2012或Express 2013中提供64位编译器?
- 3. c#reportviewer visual studio 2012 express
- 4. 在Visual Studio Express 2012(C#)中更新LocalDB文件
- 5. Microsoft Visual C++ Express编译器是否编译C代码?
- 6. C代码在Visual Studio中编译成什么汇编语言?
- 7. 如何在Visual Studio中编译特定的源代码文件?
- 8. Typescript - 在Visual Studio代码中编译.ts文件时出错
- 9. 在Visual Studio中通过C#类编译C++代码
- 10. Visual Studio代码 - SCSS编译
- 11. G ++编译Visual Studio代码
- 12. EF 5代码优先与SQL Server Express 2012和Visual Studio 2012
- 13. 将VC++ 06迁移到Visual Studio 2012:从编译中删除hcw
- 14. Visual Studio C编译器未将头文件链接到其源代码对象
- 15. Visual Studio 2008 - 将文件移动到bin/
- 16. 编译C文件在Matlab与Visual Studio
- 17. 将C代码编译为Visual C++ dll?
- 18. 如何在Visual Studio 2008中编译C代码?
- 19. Visual Studio 2012 Express - 图像不会被编译/复制
- 20. 在Visual Studio中编译时,在/ bin中没有生成DLL/EXE
- 21. 如何在Visual Studio 2012中包含TypeScript文件并编译整个文件?
- 22. Visual Studio 2012 Express和Professional
- 23. Visual Studio 2012和SQL Server Express
- 24. Visual C++ 2008 Express Edition可以编译C源代码吗?
- 25. visual studio express 2012 for web - 条件断点
- 26. Visual Studio 2010将.cpp文件编译为.c文件
- 27. Visual Studio Web Developer Express 2012 RC:如何为代码添加书签?
- 28. 编译* .lib文件visual studio
- 29. 在Visual Studio Express 2012 for Windows 8中阅读文本框
- 30. 在Visual Studio 2012
你听起来很迷茫;十六进制只是二进制的另一种表示。 .exe是一个包含运行它所需的所有二进制文件的文件。你对这个问题的意图是什么? – user1167662 2013-04-23 02:28:54
构建操作系统。为了达到最佳性能,我希望它尽可能低。 – 2013-04-23 02:36:59
你想让这个平台运行在什么平台上?构建一个操作系统并不是一件简单的事情,我也不会试着从一个典型的PC开始,像你可能想到的那样。从与你处于同一位置的人处获得此信息,不知道如何制作简单的操作系统。我通过尝试使用树莓派作为平台执行相同的任务并学习了很多,本教程:http://www.cl.cam.ac.uk/projects/raspberrypi/tutorials/os/。 – user1167662 2013-04-23 02:41:57