《深入理解計算機(jī)系統(tǒng)》值得每位程序員一讀,看完之后將會對整個計算機(jī)體系有一個直觀的認(rèn)識。
有一些重要的原因促使程序員必須知道編譯系統(tǒng)是如何工作的
+x86-64的指令長度從1到15個字節(jié)不等。常用以及操作數(shù)較少的指令所需字節(jié)數(shù)少,而不是常用或操作數(shù)較多的指令所需字節(jié)數(shù)較多?
+反匯編器只是基于機(jī)器代碼文件中的字節(jié)序列來確定匯編代碼,它不需要訪問該程序的源代碼或匯編代碼。
將指針從一種類型強(qiáng)制轉(zhuǎn)換成另一種類型,只改變他的類型,而不改變它的值
函數(shù)指針的值是該函數(shù)機(jī)器代碼表示中第一條指令的地址
*操作符用于間接引用指針
在實際的處理器中,是同時對多條指令求值的,這個現(xiàn)象稱為指令級并行。
在程序中利用局部性
目標(biāo)文件有三種格式:
函數(shù)和已經(jīng)初始化的全局變量是強(qiáng)符號,未初始化的全局變量是弱符號。
重定位由兩步組成,重定位節(jié)和符號定位,重定位節(jié)中的符號引用
異常的類別
所有到linux系統(tǒng)調(diào)用的參數(shù)都是通過通用寄存器而不是棧傳遞的。
進(jìn)程會因為三種原因終止
終止線程
1.頂層線程例程返回時,線程會隱式的終止
2.調(diào)用pthread_exit函數(shù),線程會顯式的終止
3.某個對等線程調(diào)用Linux的exit函數(shù)
4.pthread_cancel
聯(lián)系客服