使用C ++编写系统

时间:2009-12-16 09:54:09

标签: c++

我的问题很简单,因为我是初学者,所以我可以使用C ++语言编写一个完整的计算机系统吗? 感谢。

8 个答案:

答案 0 :(得分:11)

嗯......通常情况下,您需要至少一些最低级别的程序集,以进行与机器相关的初始化等等。

严格来说是“不”,但这确实可能是一个非常小的比例,使真正的回答“是”。

BeOS是用C ++编写的操作系统的一个例子。

答案 1 :(得分:2)

不,你不能。

您需要在编程语言中未标准化的低级服务。例如,您需要系统端口和DMA IO,在所有平台上基本上看起来都不同。这通常由最低级别的内联汇编代码完成,尽管某些C ++编译器将为您提供访问CPU功能(如寄存器和特殊操作码)的特殊关键字。例如,在MS VC ++中,您有_EAX伪变量来访问EAX CPU寄存器。

答案 2 :(得分:1)

你需要一些装配。这是因为操作系统设计需要一些特权指令,这些指令不会由C / C ++编译器生成。

一个例子是当用户代码想要使用操作系统服务(如进程间通信)时,它需要从用户模式切换到内核模式。这通常通过发出软件中断(SWI)来完成。 C ++永远不会创建SWI指令。

类似地,当编写任意精度整数算术库时,需要找到Carry Bit的值。没有C / C ++运算符可以为您执行此操作。你将不得不使用汇编程序。

事件,直接写入设备寄存器可以并且通常在C中完成。将volatile关键字放入语言中专门用于其值可能意外更改的寄存器

答案 3 :(得分:1)

是。 C ++是Turing Complete ...... Excel也是如此,这是一个聪明的家伙在实施a realtime 3D engine时发现的。

答案 4 :(得分:0)

简单地说,是的,你可以。

答案 5 :(得分:0)

您可以用C ++编写所有可能的程序。实际上,您可以使用大多数语言编写大多数程序,尤其是在排除性能问题时。这个概念被称为“图灵完整性”

答案 6 :(得分:0)

您可能对this book感兴趣。它解释了计算机如何工作,从最低的硬件级别到代码。 不能推荐它!

http://ecx.images-amazon.com/images/I/31VTerGLfML._BO2,204,203,200_PIsitb-sticker-arrow-click,TopRight,35,-76_AA240_SH20_OU01_.jpg

答案 7 :(得分:-1)

你可以用C ++编写一个完整的操作系统,如果你这么倾向(并且需要十年左右的时间......),因为它会编译成机器代码。

虽然这可能不是一个“初学者”的任务,但说实话,普通的旧C对于系统级的东西来说是更好的选择(Windows和Linux内核都使用C)。