課題: 馮諾依曼式計算機CPU模擬器


 

 

這次大作業的代碼量比往年少很多,算上注釋也就300行左右。

我覺得最難的部分是對於題目的理解,也就是對指令集的理解。如何正確地獲取和處理指令中蘊含的信息是解決該問題的關鍵。

 

 

程序的大致步驟:

       程序開始時要從指定文件中讀入一段用給定指令集寫的程序至內存(從地址0開始順序保存),程序計數器初始值也為0。然后程序就開始不斷重復取指令(讀取程序計數器PC內的指令地址,根據這個地址將指令從內存中讀入,並保存在指令寄存器中,同時程序計數器內容加4,指向下一個條指令。因為我們所有的指令長度固定為4個字節,所以加4)。分析指令(對指令寄存器中的指令進行解碼,分析出指令的操作碼,所需操作數的存放位置等信息)和執行指令(完成相關計算並將結果寫到相應位置)的過程。程序每執行一條指令就要輸出CPU當前的狀態,如各寄存器的值,指定內存的值等(具體要求在后邊)。當讀到停機指令時,程序按要求輸出后就結束了。

 

What I Learn:

  • short類型轉按位轉化為兩個char類型的黑魔法:
  • 封裝的重要思想:
    每次根據指令的類型對寄存器中數據處理的時候,情況很復雜,數據寄存器,地址寄存器和立即數寄存器都可以是目標寄存器與源寄存器。
    但是從整體上看,這個過程無外乎就是從寄存器中取數據,以及將結果存入寄存器中。這樣得話,我們就可以將這兩個子過程封裝成兩個函數,極大地簡化了程序。



  • 附上:單核CPU模擬器代碼鏈接:https://pan.baidu.com/s/1lzqZin4oJarKANA0LEOyzw   提取碼:aohc
          CPU模擬器任務書鏈接:
    https://pan.baidu.com/s/1fXxnys4flisHV1sRcPdqEg  提取碼:pxb7 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM