https://dl.dropboxusercontent.com/u/61164954/project/Apr8086/index.htm
趁著連假這幾天趕了一下進度,開始檢查和修正之前寫好的8086 cpu code指令模擬的bug,利用fakePC這個project加以修改,匯出執行每一個步驟的各暫存器的log,用來檢查自己的專案正確性,持續修正到將BIOS畫面輸出,由於尚未時做控制周邊IO,目前會讀到IO的回傳部分是依賴fakePC記錄輸出(建立步驟與io回應的關係),記錄了步驟從從1~1100000 其中會回傳io read的部分,順利到達系統記憶體checking階段,然後就暫時先停止運作,等待日後更完整實作.
目前撰寫起來,雖然8086 cpu模擬也還稱不上困難(相對於arm解碼, 8086已經算是很好處理了),但這顆16bits的cpu相較前身8008來說整體運作已經付雜很多,主要是x86的節區運作觀念,幾個節區暫存器怎樣的狀況下使用哪個,又記憶址分成 effective address (EA) 與 physical address (PA),每種狀況下換算用的方式又盡不同,以及所謂的prefix指令,最後就是雜七雜八的定址法,跟8bits cpu時代相比完全不可一概而喻了,但CPU要用軟體模擬只要規則搞懂,flag沒搞錯,基本上也就是規格書怎麼描述,你就依樣畫葫就是,所以錯得再怎麼多,只要有耐性,跟別人的的steps log比對,看看問題出在哪還節哪個指令,慢慢修正下去,都還可以處理.
比較麻煩的,對於像我這種悟性比較不足.硬體接觸經驗又相對不足的人來說,幾個周邊裝置io的了解與模擬,我認為才是後面階段的大重點.
由於這並非是我我的工作,只是我的興趣與休閒,因此之後進度也沒很刻意要求,一切隨意.