許久以前就有寫一個tiny的操做系統的打算,但時間和精力關係,想法一直沒有成爲最終的代碼。操做系統的構建自己是個系統工程,門檻較高,須要多方面的知識,每每幾行代碼背後是厚厚的幾本書才能說清的。以前爲了寫操做系統也是四處蒐集資料,看了許多書,沒有啥經驗,花費了許多時間,到頭來也沒什麼成果。所以,開個帖子,一是記錄本身寫這個os的過程,分享下經驗;另外,也是抱着邊寫邊學的態度,想着經過動手實踐來跨過這個門檻。html
下面是本身整理的一些資料,後面可能會用到。本文用到編譯平臺是64位的linux,使用bochs來調試。編寫操做系統過程當中須要混合使用彙編和c語言,彙編語言使用的是AT&T語法,這也是gnu as所支持的。linux
【資料】程序員
1,cmu的操做系統公開課程,裏面有兩個demo(jos,xv6),同時提供了關於x86架構、彙編語言等資料: https://pdos.csail.mit.edu/6.828/2017/ 2,gcc的官方手冊: https://gcc.gnu.org/onlinedocs/gcc-7.2.0/gcc/ 3,gnu as的手冊:https://sourceware.org/binutils/docs/as/ 4,gnu ld的手冊,重點是連接腳本:https://ftp.gnu.org/old-gnu/Manuals/ld-2.9.1/html_mono/ld.html 5,AT&T彙編:http://csiflabs.cs.ucdavis.edu/~ssdavis/50/att-syntax.htm 6,ELF格式,這是linux系統中可執行文件所使用的格式,也是as,gcc,ld所支持的:
http://www.cs.northwestern.edu/~pdinda/icsclass/doc/elf.pdf
http://learn.tsinghua.edu.cn/kejian/data/77130/138627/html-chunk/ch18s05.html 7,gnu make:https://www.gnu.org/software/make/manual/make.html
http://mrbook.org/blog/tutorials/make/
8,參考書:《深刻理解計算機系統》《程序員的自我修養》《LINUX內核徹底剖析:基於0.12內核》《x86_x64體系探索及編程》《x86彙編語言 從實模式到保護模式》