多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > 互聯網 > linux0.11學習筆記(2)

linux0.11學習筆記(2)

來源:程序員人生   發布時間:2014-11-11 08:05:54 閱讀次數:3038次

makefile文件:

makefile 文件是make 工具程序的配置文件。make 程序是使用Makefile數據文件和代碼文件的最后修改時間(last-modification time)來肯定那些文件需要進行更新,對每個需要更新的文件它會根據Makefile 中的信息發出相應的命令。在Makefile 文件中,開頭為'#'的行是注釋行。文件開頭部份的'='賦值語句定義了1些參數或命令的縮寫。在援用定義的標識符時,需在前面加上$符號并用括號括住標識符。前1行最后的''符號表示下1行是續行。all 表示創建Makefile 所知的最頂層的目標。dep: 該目標或規則用于各文件之間的依賴關系。創建的這些依賴關系是為了給make 用來肯定是不是需要要 重建1個目標對象的。

簡單的makefile 文件含有1些規則,這些規則具有以下的情勢:
目標(target)... : 先決條件(prerequisites)...
命令(command)
...
...

其中'目標'對象通常是程序生成的1個文件的名稱;例如是1個可履行文件或目標文件。目標也能夠是所要采取活動的名字,比如'清除'('clean')。'先決條件'是1個或多個文件名,是用作產生目標的輸入條件。通常1個目標依賴幾個文件。而'命令'是make 需要履行的操作。1個規則可以有多個命令,每個命令自成1行。請注意,你需要在每一個命令行之前鍵入1個制表符。自動變量的值是基于目標對象及其先決條件而在命令履行前設置的。例如,’$^’的值表示規則的所有先決條件,包括它們所處目錄的名稱;’$<’的值表示規則中的第1個先決條件;’$@’表示目標對象


.c.s: # make 老式的隱式后綴規則。該行唆使make 利用下面的命令將所有的 .c 文件編譯生成.s 匯編程序。':'表示下面是該規則的命令。

$*.s(或$@)# 是自動目標變量,$<代表第1個先決條件,這里即是符合條件 *.c 的文件。

(cd kernel/math; make)計入子目錄履行make命令


內核的編譯進程:對boot/中的bootsect.s、setup.s 使用8086 匯編器進行編譯,分別生成各自的履行模塊。再對源代碼中的其它所有程序使用GNU 的編譯器gcc/gas 進行編譯,并連接成模塊system。再用build 工具將這3塊組合成1個內核映象文件image.



as86 和ld86 是由Bruce Evans 編寫的Intel 8086 匯編編譯程序和連接程序。它完全是1個8086的匯編編譯器,但卻可以為386 處理器編制32 位的代碼。Linux 使用它僅僅是為了創建16 位的啟動扇區(bootsector)代碼和setup 2進制履行代碼。該編譯器的語法與GNU 的匯編編譯器的語法是不兼容的,但近似于Intel 的匯編語言語法(如操作數的次序相反等)。


Linux 操作系統啟動部份的主要履行流程:

PC 的電源打開后,80x86 結構的CPU 將自動進入實模式,并從地址0xFFFF0 開始自動履行程序代碼,這個地址通常是ROM-BIOS 中的地址。PC 機的BIOS 將履行某些系統的檢測,并在物理地址0 處開始初始化中斷向量。爾后,它將可啟動裝備的第1個扇區(磁盤引導扇區,512 字節)讀入內存絕對地址0x7C00 處,并跳轉到這個地方。啟動裝備
通常是軟驅或是硬盤


Linux 的最最前臉部分是用8086 匯編語言編寫的(boot/bootsect.s),它將由BIOS 讀入到內存絕對地址0x7C00(31KB)處,當它被履行時就會把自己移到絕對地址90000(576KB)處,并把啟動裝備中后2kB 字節代碼(boot/setup.s)讀入到內存0x90200 處,而內核的其它部份(system 模塊)則被讀入到從地址0x10000 開始處,由于當時system 模塊的長度不會超過0x80000 字節大小(即512KB),所以它不會覆蓋在0x90000 處開始的bootsect 和setup 模塊。隨后將system 模塊移動到內存起始處,這樣system模塊中代碼的地址也即等于實際的物理地址。便于對內核代碼和數據的操作。然后將全部系統從地址0x10000 移至0x0000 處,進入保護模式并跳轉至系統的余下部份(在0x0000 處)。
此時所有32 位運行方式的設置啟動被完成: IDT、GDT 和LDT 被加載,處理器和協處理器也已確認,分頁工作也設置好了;終究調用init/main.c 中的main()程序。上述操作的源代碼是在boot/head.S 中的。

(42)


生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 亚洲经典在线中文字幕 | 波多野结衣午夜 | 综合天堂 | 亚洲国产精品久久日 | 嫩草影院久久国产精品 | 国产最新精品视频 | 黑人性hd| 色综合天天综合网国产成人 | 视频在线观看网站免费 | 免费v片在线观看 | 日韩视频高清免费看 | 九九精品久久久久久久久 | 国产91一区二这在线播放 | 国产精品三级在线观看 | 视频一区二区在线 | 国产精品成人扳一级aa毛片 | 一级做a爰片久久毛片欧美 一级做a爰片久久毛片人呢 | 女人18一级毛片免费观看 | 欧美日韩乱国产 | 一久久 | 最近完整中文字幕1 | 日本特黄色大片 | 男女啪啪片 | 亚州精品永久观看视频 | 97久久综合区小说区图片专区 | 91成人午夜精品福利院在线观看 | 最近中文字幕国语免费高清6 | 国产国产人在线成免费视频69 | 亚洲美女色 | 久久九色 | 最近中文字幕在线观看 | 国产成人看片免费视频观看 | 欧美亚洲不卡 | 国产亚洲精品精品国产亚洲综合 | 看欧美毛片一级毛片 | 2021年最新久久久视精品爱 | 国产日韩欧美一区二区三区综合 | 久久国内精品 | 国产精品久久久久久久久 | 国产成人亚洲综合91精品555 | 欧美伦理三级在线播放影院 |