c++ - 应该使用哪种C语言和图形库来编写与操作系统无关的程序?

标签 c++ c operating-system

我正在尝试编写一个程序,我想在系统启动之前运行它,就像Windows XP的安装程序一样。问题是我无法弄清楚应该使用哪个版本的 C/C++ 编程语言。因为据我所知,C 语言有很多版本,它们只适用于 DOS、Windows 和 Linux。或者有什么方法可以在 Visual C++ 或 Turbo C 中编写可以在没有任何操作系统的情况下运行的程序。

我的下一个问题是,在该 C 语言中可以使用哪个图形库来在屏幕上创建和显示图像和形状,设置背景颜色等。

我在维基百科上读到一篇关于Windows的文章,发现它是用C++编写的。所以我想我也可以用 C++ 编写类似类型的程序,而无需切换到汇编语言。

最佳答案

您想编写一个在不加载操作系统的情况下直接在启动后运行的程序吗?抱歉,但是如果您需要询问要使用哪种语言,那么您面前的学习曲线非常陡峭,因此您应该考虑大幅降低第一次尝试的目标。

在空间非常宝贵的过去,引导加载程序是用原始汇编程序编写的。如今,大部分功能都是用 C(或者可能是 C++)编写的,但在最早的阶段仍然需要进入汇编程序,这些阶段从 BIOS 接管,从磁盘加载比单扇区 BIOS 提供的更多代码,然后将将处理器置于保护模式,以便它可以访问超过 1 MB 的 RAM。

C 和 C++ 之间的选择主要取决于偏好。 C++ 往往需要更复杂的程序集介绍,以便按照编译代码期望的方式设置其运行时环境。无论哪种情况,您都不会有太多可用的标准库。例如,除非您自己实现,否则不能使用 malloc/free/new/delete。

无论使用哪种语言,您都需要自定义链接阶段,这远远超出了现成的编译器工具链通过简单命令为您所做的事情。

关于c++ - 应该使用哪种C语言和图形库来编写与操作系统无关的程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7207211/

相关文章:

linux - 优先级调度 OS bash 文件

operating-system - MS Windows 有什么样的内核?

c++ - ostream 运算符<< 无法正常工作

c++ - 将 std::cout 添加到全局运算符新掩码 SIGSEGV

c - 二叉树镜像()这是如何工作的?

c - sigaction 和 sigset_t 在 Solaris 和 Linux 之间的可移植性

c++ - SSAO 阴影随相机移动很奇怪(计算 gbuffer 错误)

c# - 在 C# 中使用托管 C++ DLL

c - C中的十六进制 float 常量

c - 多线程计算矩阵乘积的时间成本