;gdt表配置參考 linux source code: setup.s, 2個entry,第乙個給cs,第二個給ds
gdt:
.word 0,0,0,0 ! dummy
.word 0x3fff ! 64mb (4000*4096=64mb),由於在boot.s中能識別的最大記憶體為64m
.word 0x0000 ! base address=0
.word 0x9a00 ! code read/exec
.word 0x00c0 ! granularity=4096, 386
.word 0x3fff ! 64mb (4000*4096=64mb)
.word 0x0000 ! base address=0
.word 0x9200 ! data read/write
.word 0x00c0 ! granularity=4096, 386
;中斷表預設為空
idt_48:
.word 0 ! idt limit=0
.word 0,0 ! idt base=0l
gdt_48:
.word 0x800 ! gdt limit=2048, 256 gdt entries
.word 512+gdt,0x9 ! gdt base = 0x9***x
.org 1008
hd_info: ;記錄了第乙個硬碟的chs資訊
.word 0x1111
.word 0x2222
.word 0x3333
.word 0x4444
.word 0x5555
memory_size:
.word 0x1122
current_track:
.byte 0x0
current_sector:
.byte 0x0
retry_count:
.byte 0x03
;核心**最大不能超過64k ,所以最大127個sectors
kernel_sectors:
.byte 0x7f
編譯boot.s和setup.s
as86 -0 -a -o boot.o boot.s
ld86 -0 -s -o boot boot.o
as86 -0 -a -o setup.o setup.s
ld86 -0 -s -o setup setup.o
另外還需要把編譯出來的boot和setup 檔案merge在一起,需要模仿linux build.c做個小工具build_boot和build_setup。
我的學習之旅 3 setup s
setup.s作為承上啟下,主要功能是cpu模式切換 載入核心 並最終跳轉到核心 entry start start setup.s由boot.s 跳轉過來的,所以此時cs暫存器的值自動變為0x9020 為了能訪問setup.s的資料內容,也需要重新整理ds,es暫存器為0x9020 mov ax,...
Tensorflow學習之旅 6
暑假就在接觸tensorflow了,但是一直斷斷續續的,所以現在又開始撿起來繼續學。ps 我用的 源於 大佬寫的很好,我也是跟著他的 在他的 上,寫上 自己的理解。構造乙個3層的網路 輸入層乙個結點,隱層3個結點,輸出層乙個結點 輸入層的維度是 n,1 隱層的維度是 1,10 輸出層的維度是 10,...
我的深度學習的學習之旅
一 前言 二 正文 在去年的七月份,也就是19年的7月份,我參加完現在所在的研究生學校的夏令營之後,得知導師對我很感興趣,而且我也基本上可以獲得本科學校的保研資格,所以就開始接受導師的學習安排。因為我選的方向是深度學習的嵌入式應用,於是就開始了深度學習的學習之旅!並且導師告訴我,不僅要學習深度學習,...