




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
linux的x86架構(gòu)初始化
——分頁機(jī)制的初始化問題1:標(biāo)志寄存器有哪些常用的標(biāo)志位?CF、PF、ZF、SF、OF、DF進(jìn)位、奇偶、零、符號(hào)、溢出、方向DF(方向標(biāo)志位)控制每次操作后si、di的增減1、X86架構(gòu)下的從開機(jī)到Start_kernel啟動(dòng)的總體過程
這個(gè)過程簡(jiǎn)要概述為:開機(jī)——>BIOS——>GRUB/LILO——>Linux
Kernel其運(yùn)行的流程圖和重要函數(shù)如下圖所示:GRUB(GRand
Unified
Bootloader)是當(dāng)前l(fā)inux諸多發(fā)行版本默認(rèn)的引導(dǎo)程序。1..boot/header.S:start_of_setup2..boot/main.c:main()->pm.c:go_to_protected_mode()3..boot/pmjump.S:protected_mode_jump4..boot/compressed/head_32.S:startup_32()->decompress_kernel()5..kernel/head_32.S:startup_32()->head32.c:i386_start_kernel()boot/compressed/head_32.S:startup_32()內(nèi)核被解壓至RAM后再調(diào)用/arch/i386/kernel/head.S文件中的startup_32例程,這個(gè)新的startup_32例程會(huì)初始化頁表,啟用內(nèi)存分頁機(jī)制。(4)設(shè)置管理內(nèi)存的分頁處理機(jī)制
setup_paging:
movl$1024*5,%ecx
//對(duì)5頁內(nèi)存(1頁目錄,4頁頁表)清零
xorl%eax,%eax
//eax內(nèi)容清空
xorl%edi,%edi
//頁目錄從0x0000開始
cld;rep;stosl
//eax內(nèi)容存到es:edi所指的內(nèi)存處,且edi增4
//以下四項(xiàng)為設(shè)置頁目錄表中的項(xiàng),_pg_dir地址為0x0000,即頁目錄地址
movl$pg0+7,_pg_dir
//pg0在前邊被指定為0x1000,所以第一個(gè)頁表項(xiàng)設(shè)定為0x00001007
movl$pg1+7,_pg_dir+4
//設(shè)置頁目錄中的第二個(gè)頁表項(xiàng)
movl$pg2+7,_pg_dir+8
//設(shè)置頁目錄中的第三個(gè)頁表項(xiàng)
movl$pg3+7,_pg_dir+12
//設(shè)置頁目錄中的第四個(gè)頁表項(xiàng)
//填寫4個(gè)頁表中的頁內(nèi)容
movl$pg3+4092,%edi
//edi設(shè)定為最后一頁頁表的最后一項(xiàng)
movl$0xfff007,%eax
//最后一項(xiàng)對(duì)應(yīng)的物理內(nèi)存是0x0xfff000,屬性標(biāo)志為0x07,表示頁存在、用戶可讀寫
std
//方向位置位
1:stosl
//eax內(nèi)容存到es:edi所指的內(nèi)存處,且edi增4
subl$0x1000,%eax
//物理地址減4K,處理下一頁。因?yàn)轫摫碇械拿恳豁?xiàng)都是代表一頁的。
jge1b
//若小于0表示都已填寫頁表ok
xorl%eax,%eax
//頁目錄地址在0x0000,所以這里對(duì)eax寄存器清空
movl%eax,%cr3
//將頁目錄表地址存入CR3中
movl%cr0,%eax
//
orl$ox80000000,%eax
//開啟PG標(biāo)志
movl%eax,%cr0
//表示啟動(dòng)使用分頁處理
ret
//謝謝!問題2:Jge指令是什么?怎么實(shí)現(xiàn)的?Jge是大于等于則跳轉(zhuǎn)(jumpifgreaterthanorequalto)指令該指令通過判斷SF異或OF是否=0來判斷是否大于等于.SF=0時(shí):大于等于。SF=1時(shí):小于。OF=0時(shí):未溢出。OF=1時(shí):溢出。其中在Intel官方文檔《Volume2AInstructionSetReference(A-M)》中提到cld指令
CLD:CLD:
Description
ClearstheDFflagintheEFLAGSregister.WhentheDFflagissetto0,stringoperations
incrementtheindexregisters(ESIand/orEDI).Operationisthesameinall
non-64-bitmodesand64-bitmo
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 銷售房屋合同范本
- 模板工程付款合同范本
- 2025年新入職護(hù)士理論考試指導(dǎo)題庫500題(含答案)
- 2025年水利三類人員C證理論考試指導(dǎo)題庫-下(多選、判斷題)
- 臨時(shí)柴油運(yùn)輸合同范本
- 汽車用油加盟合同范本
- 卡車汽車租賃合同范本
- 景觀小品轉(zhuǎn)讓合同范本
- 幼兒園大班安全詳細(xì)教案
- 醫(yī)學(xué)影像技術(shù)在整形美容中的應(yīng)用
- 巖土工程中的非線性問題分析
- 《普洱茶的定義》課件
- 儲(chǔ)備土地管護(hù)投標(biāo)方案 (技術(shù)方案)
- 學(xué)技能如何打逃生繩結(jié)固定繩結(jié)
- 特殊教育:康復(fù)訓(xùn)練課程標(biāo)準(zhǔn)(年版)
- DCMM理論知識(shí)考試試題及答案
- 中學(xué)生心理輔導(dǎo)-第一章-緒論
- 工業(yè)品買賣合同(樣表)
- 《教育學(xué)原理》馬工程教材第二章教育與社會(huì)發(fā)展
- 《常見疾病康復(fù)》期中考試試卷含答案
- 地球使用者地樸門設(shè)計(jì)手冊(cè)
評(píng)論
0/150
提交評(píng)論