pushq %rax
leaq 0x2000(%rax), %rax
movl 28(%rax), %eax
movq %rax, %rbx
andq $7, %rbx
shrq $3, %rax
test %rbx, %rbx
jz .pte
incq %rax
.pte:
pushq %rdx
movq %rax, %rdx
movq %rax, %rcx
andq $511, %rdx
shrq $9, %rcx
.pde:
pushq %rcx
movq $0x200003, %rbx
movq $0x1C2008, %rsi
movq $0x1C5000, %rdi
test %rcx, %rcx
jz .pde_loop_end
.pde_loop:
movq %rdi, %rax
addq $3, %rax
movq %rax, (%rsi)
addq $8, %rsi
pushq %rcx
movq $512, %rcx
.pte_loop:
movq %rbx, (%rdi)
addq $0x1000, %rbx
addq $8, %rdi
loop .pte_loop
popq %rcx
loop .pde_loop
.pde_loop_end:
test %rdx, %rdx
jz .no_last_page
movq %rdi, %rax
addq $3, %rax
movq %rax, (%rsi)
addq $8, %rsi
movq %rdx, %rcx
.last_pte_loop:
movq %rbx, (%rdi)
addq $0x1000, %rbx
addq $8, %rdi
loop .last_pte_loop
.no_last_page:
popq %rcx
shlq $9, %rcx
orq %rdx, %rcx
popq %rdx
popq %rax
2019年8月8日 星期四
自製64位元作業系統20──核心分頁Part 2
之前,我們製作了一個處理核心分頁的程式,不過我們以2MiB為單位分配,實在是太浪費了,我們準備要把這個問題解決,利用4KiB為單位分配。
延伸閱讀:
- Swift 九九乘法表 程式碼 - 2021-09-30
- C++排序教學1 - 泡沫排序法 Bubble Sort - 2020-10-01
- Python - Hello world 我的第一個程式! - 2019-12-14
- 【C語言】解二元一次方程式 - 2019-12-03
- C語言 河內塔 - 2019-11-25