日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

开启分页机制———《x86汇编语言:从实模式到保护模式》读书笔记44

發布時間:2025/3/15 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 开启分页机制———《x86汇编语言:从实模式到保护模式》读书笔记44 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

開啟分頁機制

必須說明的是,必須在保護模式下才能啟動分頁功能。本章的引導程序依然用第13章的。

開啟分頁機制之前,必須創建頁目錄和頁表。因為內核是在開啟頁功能之前加載的,段在內存中的位置已經固定。在這種情況下,即使開啟了分頁功能,線性地址也必須和物理地址相同才行,不然就會“跑飛”。

因為我們的內核很小,將其加載到內存后,連低端的1MB空間都沒有占完全,所以只需要將低端1MB內存做特殊處理,使這部分內存的線性地址和物理地址相同即可。這樣做的好處是:內核不用做任何變動即可在分頁模式下繼續正常工作,再也不會擔心“跑飛”了。

對于頁目錄和頁表,頁目錄必須在內存中,頁目錄和頁表必須各自占用一個自然頁,也就是說它們的物理地址的低12位必須全零。

一個頁表最多可以容納1024個表項,對應1024個頁,也就是4MB內存。對于我們的內核,還不到1MB,所以一個頁目錄和一個頁表足矣。作者的設計是把頁目錄放在物理地址0x0002_0000處,把頁表放在0x0002_1000處。

926 ;頁目錄表清零 927 mov ecx,1024 ;1024個目錄項 928 mov ebx,0x00020000 ;頁目錄的物理地址 929 xor esi,esi 930 .b1: 931 mov dword [es:ebx+esi],0x00000000 ;頁目錄表項清零 932 add esi,4 933 loop .b1

以上代碼將頁目錄和頁表的所有目錄項清零。之所以這樣做,主要是使所有目錄項的P位為0.

935 ;在頁目錄內創建指向頁目錄自己的目錄項 936 mov dword [es:ebx+4092],0x00020003 937 938 ;在頁目錄內創建與線性地址0x00000000對應的目錄項 939 mov dword [es:ebx+0],0x00021003 ;寫入目錄項(頁表的物理地址和屬性)

創建2個目錄項。
936:P=1;RW=1;US=0;這個目錄項指向了自己,為的是可以方便地用線性地址訪問自己。
939:添加一個表項,使其指向頁表。P=1;RW=1;US=0。

942 mov ebx,0x00021000 ;頁表的物理地址 943 xor eax,eax ;起始頁的物理地址 944 xor esi,esi 945 .b2: 946 mov edx,eax 947 or edx,0x00000003 948 mov [es:ebx+esi*4],edx ;登記頁的物理地址 949 add eax,0x1000 ;下一個相鄰頁的物理地址 950 inc esi 951 cmp esi,256 ;僅低端1MB內存對應的頁才是有效的 952 jl .b2 953 954 .b3: ;其余的頁表項置為無效 955 mov dword [es:ebx+esi*4],0x00000000 956 inc esi 957 cmp esi,1024 958 jl .b3

上面的代碼用來填寫頁表項。填寫后,內核的頁目錄和頁表視圖如下。

960 ;令CR3寄存器指向頁目錄,并正式開啟頁功能 961 mov eax,0x00020000 ;PCD=PWT=0 962 mov cr3,eax 963 964 mov eax,cr0 965 or eax,0x80000000 966 mov cr0,eax ;開啟分頁機制

961~962:PWT=0,PCD=0;登記頁目錄表的基地址。

964~966:正式開啟分頁機制。

分頁機制開啟后,根據上面的頁目錄和頁表視圖,可以算出:
線性地址:0x0000_0000~0x0000_FFFF
映射到
物理地址:0x0000_0000~0x0000_FFFF;

線性地址:0x8000_0000~0x8000_FFFF
也映射到
物理地址:0x0000_0000~0x0000_FFFF;

總結

以上是生活随笔為你收集整理的开启分页机制———《x86汇编语言:从实模式到保护模式》读书笔记44的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。