顯示卡記憶體和一般的記憶體一樣可以儲存資料,它的每個位址都對應著畫面上的畫素,可以利用這一機制在畫面上繪製出五彩繽紛的圖案。vram 分布在記憶體分布圖上好幾個不同的地方。這是因為不同的畫面模式的畫素數也不一樣,不同的畫面模式可以使用的記憶體也不一樣。
32位模式下可使用的記憶體容量遠遠大於1mb。cpu的自我保護功能(識別出可疑機器語言並進行遮蔽)在16位下不能用,但在32位下能用。
通過bios 獲取鍵盤狀態並儲存狀態資訊:
這一部分在32位模式下,程式的前半部分使用組合語言編寫,後半部分使用c語言編寫,使用匯程式設計序呼叫c語言程式bootpack.c。
ccl是c語言編譯器,可以將c源程式編譯成組合語言源程式,由作者根據gcc改造而來,而gcc是以gas組合語言為基礎,輸出的是gas組合語言源程式。
gas2nask 將gas匯程式設計序轉化為nas源程式,之後使用nask.exe 將bootpack.nas生成obj檔案,obj2bim將目標檔案和別的目標檔案相連線,並存入一些交換資訊,bim是作者設計的一種檔案格式,是乙個二進位制映象檔案。bim2hrb針對不同的作業系統進行必要的加工,比如加上識別用的檔案頭或者壓縮。
使用組合語言寫乙個函式,函式名io-hlt,將輸出格式設定為wcoff模式,以便與bootpack.obj鏈結。
之後使用bootpack.c呼叫io_hlt,執行結果同樣是黑屏。
由實模式進入保護模式來進行32位定址
因為cpu在實模式下位址匯流排為20位,所以能訪問到的內存在1m左右,為了能操作更多的記憶體,cpu生產商設計了保護模式,在此模式下匯流排位址可達32位,訪問記憶體明顯增加。用保護模式來32位定址的操作要用乙個叫gdt的東西,這個gdt global descriptor table 叫全域性描述表...
C語言 32位,64位機器sizeof區別
float,double 採用ieee標準浮點數格式,格式固定float 32bit,double 64bit int一般和cpu暫存器長度有關,不過也和編譯器,彙編器有關 由於c c 標準沒有規定整數型別的固定長度。同一cpu不同作業系統和編譯器,對於int 型別規定的長度是不同的 於是為了區別這...
C語言 32位,64位機器sizeof區別
float,double 採用ieee標準浮點數格式,格式固定float 32bit,double 64bit int一般和cpu暫存器長度有關,不過也和編譯器,彙編器有關 由於c c 標準沒有規定整數型別的固定長度。同一cpu不同作業系統和編譯器,對於int 型別規定的長度是不同的 於是為了區別這...