2016年8月17日 星期三

8086 指令集模擬完成後

單只有CPU不能稱上是一部電腦,若只是把指令集模擬完成,還是沒有任何作用,於是開始進入相關電腦周邊控制模擬的階段,簡單來說cpu可以透過 IN OUT 兩個指令對 IO port 做溝通,在8086中這個 IO port 很相似於一個獨立的記憶體介面位址(只是讀寫的是裝置) , port 位址從 0x0 ~ 0xffff  (不確定 8086之後是不是也是這樣) , 鍵盤.滑鼠.軟碟片.顯示卡...有的沒的基本周邊都要透過 IO port去溝通存取控制, 而且各自的控制器都有各自的規則特性 , 需要去了解 , 完成了cpu的指令模擬真的才完成整個專案的一小塊部分,所以還有一段路得走.

列出參考  http://wiki.osdev.org/I/O_Ports

每一個裝置控制器要了解又得花不少功夫(至少對我這種平凡的人來說)......

其實後來看別人的project sources做法,有些似乎沒有真正完整實做這些周邊的功能特性(控制器規則等等),只是把DOS跟BIOS用到的中斷服務最後結果給做出來,簡單來這算是一種取巧的做法,這種作法有利有弊,優點大概就是程式較為簡略些,我只要管呼叫這個中斷要得到什麼正確的結果,更底層 IN OUT對周邊的動作控制細節不用真的處理到,速度理論上也比較快.缺點大概是相容性有限,如果是別的作業系統中斷功能定義跟DOS不同,當然就有問題 ,這種差異大概就像是 Dosbox 和  Bochs 兩種實做的差異 , dosbox官翻網站所言

https://www.dosbox.com/links.php

 Bochs emulates a full x86 based pc. Unlike DOSBox that tries to mainly emulate dos programs.

至於現在,因為這專案偏於學習使用,剛好趁這機會也多了解一些東西,姑且先以 full x86 base pc為開發目的,若以後有別想法或是難以實現,視情況再修改做法.

沒有留言:

張貼留言