Configured with: ../src/gcc-6.3.0/configure --build=x86_64-pc-linux-gnu --host=mingw32 --with-gmp=/mingw --with-mpfr=/mingw --with- mpc=/mingw --with-isl=/mingw --prefix=/mingw --disable-win32-registry --target=mingw32 --with-arch=i586 --enable-languages=c,c++,objc,obj-c++,fortran,ada --with-pkgversion='MinGW.org GCC-6.3.0-1' --enable-static --enable-shared --enable-threads --with-dwarf2 --disable-sjlj-exceptions --enable-version-specific-runtime-libs --with-libiconv-prefix=/mingw --with-libintl-prefix=/mingw --enable-libstdcxx-debug --with-tune=generic --enable-libgomp --disable-libvtv --enable-nls
- 你可以於此程式中看到全部的變數(我們用extern的方法,使我們可以共用變數),並且基本定義我們會用到的IF、ID、EX、MEM、WB函式
- 我們在這個程式中定義了初始化變數的函式
- 執行IF階段應完成的事項
- (讀入指令,並存放到變數,其中有可能需要stall
- 只要有進行此stage會印出此stage到result.txt,
- (ex:branch的predict not taken),另外結束後傳值給ID stage)
- 執行ID階段應完成的事項
- (執行decode instruction,判斷指令,並賦予對應的opcode,
- 此階段也有需要針對stall、forwarding判斷
- 只要有進行此stage會印出此stage到result.txt,
- ,另外結束後傳值給EX stage)
- 執行EX階段應完成的事項
- (做到運算,並提供forwarding等...功能,branch指令結束後的判斷等等...
- 只要有進行此stage會印出此stage到result.txt,
- ,另外結束後傳直給MEM stage)
- 執行IF階段應完成的事項
- MEM_Mem_Read 判斷要不要將memory的內容傳給ReadData
- MEM_Mem_Write 判斷要不要將register的內容傳給memory
- 傳值給WB,另外結束後傳直給WB stage)
- 執行IF階段應完成的事項
- WB_Reg_Write 判斷要不要將資料寫回register
- WB_MemtoReg 判斷寫入ReadData還是WB_Result
- 最後設置 STOP_WB 狀態
- 在執行程式碼之前,請記得先將要測試的題目複製到memory.txt中,須注意由於我們的程是碼會判斷格式,所以需要依照我們提供的程式碼的格式進行輸入,如果有跑錯,可能會是你的格式有誤
- (memory1.txt對應ppt第一題,以此類推...)
- (在cmd可直接輸入main)
- (ppt輸出格式會於result.txt)
g++ -c Header.cpp IF.cpp ID.cpp EX.cpp MEM.cpp WB.cpp main.cpp
g++ -o main Header.o IF.o ID.o EX.o MEM.o WB.o main.o
./main