流程圖如下:
必須安裝 lcc, PCSpim, Visual C++
寫一個C語言程式儲存成a1.c檔.使用Visual C++撰寫:
轉換作業系統到fedora 8
將a1.c放置在/usr/cadence/lcc/projects 內
開啟終端機
輸入 cd /usr/cadence
csh
source lcc.csh
cd lcc/projects
lcc –Wf-target=mips/iris –S a1.c
即可產生a1.s檔案,內容為MIPS R3000組何語言程式所組成的a1.c程式
轉換作業系統到winxp,將a1.s檔案放置到C:\Temp\0219\9
開啟 自動修改組合語言 目錄內的C語言小程式
將
fi=fopen("C:/Temp/1117/a1.s","r+");
fo=fopen("C:/Temp/1117/t1.s","w+");
修改成a1.s所放置的目錄
fi=fopen("C:/Temp/0219/9/a1.s","r+");
fo=fopen("C:/Temp/0219/9/t1.s","w+");
PS:注意 “/” 不一樣
此程式是將PCSpim無法辨識的組譯器指令去掉.
執行後會產生t1.s檔
PS:使用lcc轉換成組合語言後,建議將檔案內容複製起來放置到另一個檔儲存,因為格式的問題,使用原始檔修改組合語言,再修改完後最後一行會重複出現。
開啟PCSpim,執行t1.s檔.
F10可以一個指令一個指令執行,可觀察t1.s程式的動作是否正確.
確定動作正確後,重新開啟PCSpim, open t1.s 直接儲存 save log file.
會產生一個PCSpim.log檔(裡面包含了t1.s的指令機器碼).
ROM為PCSpim.log檔內的 Text Segment內的機器碼,如下圖紅色框框內的機器碼
SRAM為PCSpim.log檔內Data Segment內的機器碼,如下圖紅色框框內的機器碼,若Data Segment內沒有值,在擷取機器碼的時候會出現錯誤,但不會影響到程式的執行.最後只需要將ROM放到MIPS R3000的rom.v檔內即可.
開啟 “擷取機器碼” 內的C語言小程式
將裡面有關於開檔的宣告位置修改正確
Ex:
fi=fopen("C:/Temp/0219/9/PCSpim.log","r+");
fo=fopen("C:/Temp/0219/9/m.asm","w+");
修改完後即可執行.
r.asm 與 sram_r.asm 即為rom 與 sram
若要修改產生出來的rom 與 sram的格式可以修改 rom() 與sram()的內容
將r.asm 與 sram_r.asm分別放置在MIPS R3000的rom.v sram.v檔內,使用synapitCAD執行
必須修改MIPS R3000的部份內容值:
regs[29]的值必須根據t1.s的程式內容來更改: (在調整SRAM記憶體配置方式上有詳細解說)