當前位置: 華文星空 > 知識

當你學會了什麽之後感覺自己的編程算是入門了?

2016-01-15知識

當我大概搞清楚了一句 「Hello world!」是怎麽出現在螢幕上的時候

printf("Hello world!");


printf 是一個C runtime的函式,「Hello world!" 是一個常量字串,編碼是ASCII的'\0'結尾的,傳遞給printf的是const char * 型別的指標,指標透過push指令壓棧,透過call指令呼叫函式。

printf會把這個字串寫入一個叫 stdout的抽象檔控制代碼,而這個檔控制代碼會被console接管。

當console從stdout讀取這個字串後,會把他寫入console的緩沖區,根據當前光標位置決定字元的位置

console的會根據緩沖來重新整理螢幕顯示

顯示字元的時候需要根據當前字型設定,用」Hello world!"的每個字元的Unicode值去計算字型內對應的字元索引,根據索引獲取字模。

根據字模來繪制字元圖形,用當前字型顏色填充,做字型邊緣平滑,生成包含字元的RGB32位元圖

把RGB32位元圖復制到console視窗對應的frame buffer

作業系統的圖形引擎把視窗的frame buffer渲染到螢幕對應的視訊記憶體內的frame buffer

顯卡根據視訊記憶體buffer 生成訊號給顯視器,顯視器根據訊號調整螢幕上每個像素的顏色和亮度。

終於可以看到「Hello world!」了

註:這只是個粗略過程,中間省略了不少於10萬字。