簡體   English   中英

用C ++編程系統

[英]Program a system with C++

我的問題很簡單,因為我是一個初學者,因此我可以僅使用C ++語言對完整的計算機系統進行編程嗎? 謝謝。

好吧...通常,您將需要至少最低限度的某些程序集,以進行與機器有關的初始化等。

因此嚴格來說是“否”,但這實際上只占很小的比例,真正的答案是“是”。

BeOS是用C ++編寫的操作系統的示例。

你不能。

您需要在編程語言中未標准化的低層服務。 例如,您需要系統端口和DMA IO,它們在所有平台上看起來基本上都不同。 盡管某些C ++編譯器會為您提供特殊的關鍵字來訪問CPU功能(例如寄存器和特殊的操作碼),但這通常是通過最低級別的內聯匯編代碼完成的。 例如,在MS VC ++中,您具有_EAX偽變量來訪問EAX CPU寄存器。

您將需要一些組裝。 這是因為存在一些操作系統設計所需的特權指令,而這些特權指令不會由C / C ++編譯器生成。

一個示例是,當用戶端代碼想要利用操作系統服務(例如進程間通信)時,它需要從用戶模式切換到內核模式。 這通常是通過發出軟件中斷(SWI)來完成的。 C ++永遠不會創建SWI指令。

同樣,在編寫任意精度的整數運算庫時,將需要找到進位位的值。 沒有C / C ++運算符可以為您執行此操作。 您將不得不使用匯編器。

直接在設備寄存器中寫入的偶然性通常可以在C中完成。volatile關鍵字專門用於其值可能意外更改的寄存器的語言中

是。 C ++是Turing Complete的 ……Excel也是如此,這是聰明的家伙在實現實時3D引擎時發現的。

簡單來說,可以。

您可以用C ++編寫所有可能的程序。 實際上,您可以使用大多數語言編寫大多數程序,尤其是在排除性能問題的情況下。 這個概念被稱為“圖靈完整性”

您可能對此書感興趣。 它說明了計算機的工作方式,從最低的硬件級別到代碼。 不夠推薦!

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

如果您願意(因為可以編譯為機器代碼),那么可以用C ++編寫一個完整的OS。

不過,這可能不是一項“初學者”任務,老實說,普通的舊C對於系統級的東西(Windows和Linux內核都使用C)是一個更好的選擇。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM