我的问题很简单,因为我是初学者,所以我可以使用C ++语言编写一个完整的计算机系统吗? 感谢。
答案 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感兴趣。它解释了计算机如何工作,从最低的硬件级别到代码。 不能推荐它!
答案 7 :(得分:-1)
你可以用C ++编写一个完整的操作系统,如果你这么倾向(并且需要十年左右的时间......),因为它会编译成机器代码。
虽然这可能不是一个“初学者”的任务,但说实话,普通的旧C对于系统级的东西来说是更好的选择(Windows和Linux内核都使用C)。