[英]Program a system with C++
我的問題很簡單,因為我是一個初學者,因此我可以僅使用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 ++編寫所有可能的程序。 實際上,您可以使用大多數語言編寫大多數程序,尤其是在排除性能問題的情況下。 這個概念被稱為“圖靈完整性”
您可能對此書感興趣。 它說明了計算機的工作方式,從最低的硬件級別到代碼。 不夠推薦!
如果您願意(因為可以編譯為機器代碼),那么可以用C ++編寫一個完整的OS。
不過,這可能不是一項“初學者”任務,老實說,普通的舊C對於系統級的東西(Windows和Linux內核都使用C)是一個更好的選擇。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.