標籤:

《深度探索c++對象模型》,C語言有沒有類似的書,講解C語言低層細節及編譯器所做工作?


關鍵是…C語言自身沒啥對象模型可言啊。

沒反射,沒虛函數,什麼「高端」構造都沒有;只有最基本的數組,struct,union,普通的函數,有靜態存儲,自動存儲(或者說棧存儲)和動態存儲(或者說堆存儲),然後有鏈接有載入,就這麼多東西了。不像C++那樣有那麼多高端語言結構要講解的。

這些基本結構如何映射到機器上,《CS:APP》講得很不錯,入門的話強力推薦這個。


我想不到單獨針對 C 語言的,或許可讀讀《程序員的自我修養 (豆瓣)》,講及 C/C++ 的編譯、鏈接和裝載運行。


如果真有這樣的書,應該就是講解各個cpu體系和操作系統的abi了吧?


如果仔細劃分的話,其實C語言裡面沒有定位與《深度探索c++對象模型》相類似的書。

《深度探索c++對象模型》講的還是語言本身的東西,而C這方面實在語法背後的東西沒什麼可以多說的。

如果要繼續深入C,不能糾結在這方面,需要繼續深入系統底層,而不是語言層面。

常推薦的書,就是上面朋友提到過的《程序員的自我修養》、CSAPP了。我個人還推薦一本彙編的書,跟C並沒有什麼關係,但是對於了解操作系統本身挺有幫助。

x86彙編語言 (豆瓣)

本書把X86的彙編,從實模式講到保護模式,每章都帶有代碼解說。


C語言底層就是彙編了,可以參考各種講x86彙編語言的書


CSAPP

真的挺建議的!


C語言的經典書籍不像C++那麼多,你只要有興趣,稍微花點時間就可以讀完。

《C陷阱與缺陷》

這本書的作者是Andrew Koenig,和C語言的發明者、C++的發明者都曾經是同事,現在還在從事和C++相關的工作。
這本書成書於1987年,一開始類似於內部報告,後來集結成書,其實也不厚,很薄的一本書。
正如書名所言,這本書講了C語言的一些「陷阱」,以及為什麼這樣。還講了鏈接和庫,就是題主所關注的方面。

《C專家編程》

這本書的作者在sun公司寫過操作系統。sun的solaris曾經號稱最優雅的操作系統,技術也非常先進,只不過在sun被收購之後,就沒人維護了。

這本書的作者在sun公司寫過操作系統。sun的solaris曾經號稱最優雅的操作系統,技術也非常先進,只不過在sun被收購之後,就沒人維護了。
這本書首次出版是在1994年,那個時候已經有了第一個C標準,但是C++標準還沒有。
這本書比上面那本書講的更全,內容更多。講了語言特性、詞法分析、鏈接、運行時、內存等方面。雖然是關於C語言的,可是讀了之後讓你更深入地了解計算機。

如果別人問我關於C語言進階的書,我就推薦這兩本。很早就讀過了,對其中的內容印象非常深刻。
有同學提到的CSAPP也是非常好的書,可是和C語言的關係並不大。

如果C語言入門書,我推薦《C primer plus》。這本書已經有第六版了,涉及最新的C標準。很厚,很詳細,是我上課使用的教材之一。

我的公眾號dingshukai666,教編程,歡迎關注~

http://weixin.qq.com/r/yzhMVE3EShA1rQk3923Z (二維碼自動識別)


CSAPP第三章,程序機器級實現


微信公眾號 碼農有道 有講解這些的文章


https://m.douban.com/book/subject/3652388/


C有ABI 。其餘的,屬於編譯器編譯過程的內部細節,一般不管。


讀完《C和指針》,這個問題樓主自己就知道答案了。


推薦閱讀:

計算機語言是有局限性的么?
如何理解c++中的引用摺疊?
extern C裡面能有C++代碼嗎?
該如何設計實現一個telnet bbs?
C++ 中對 main 函數的地址賦值會怎樣?

TAG:C編程語言 | C | CC |