我們首先要進入32位元相容模式,我們要設定一個Paging,先把0到2MiB的虛擬記憶體先映射到本身,讓我們可以繼續做接下來的動作。
bootEntry:
# Setup Page Table
leal 0x1C0000, %edi
movl %edi, %cr3
xorl %eax, %eax
movl $0x10000, %ecx
rep stosl
movl $0x1C1003, 0x1C0000
movl $0x1C2003, 0x1C1000
movl $0x1C3003, 0x1C2000
leal 0x1C3000, %edi
movl $3, %eax
movl $512, %ecx
.loop_low2mb_pg:
movl %eax, (%edi)
addl $0x1000, %eax
addl $8, %edi
loop .loop_low2mb_pg
然後我們就接著開啟PAE。# Enable PAE
movl %cr4, %eax
orl $32, %eax
movl %eax, %cr4
然後我們開啟MSR暫存器的LMBit進入長模式。# EFER MSR
movl $0xC0000080, %ecx
rdmsr
orl $256, %eax
wrmsr
最後開啟分頁功能。# Enable Paging
movl %cr0, %eax
orl $0x80000000, %eax
movl %eax, %cr0
👉【幫我們一個忙!】👈
👋如果您喜歡這篇文章,請在下方按5個Like!
❤您的支持是我們最大的動力!
您只要登入帳號(Facebook、Google),在下方按5個Like,我們就會收到來自LikeCoin基金會的贊助。
您只需要支持我們,完全不會花到錢!