計算機組成與設(shè)計課內(nèi)實驗指導(dǎo)_第1頁
計算機組成與設(shè)計課內(nèi)實驗指導(dǎo)_第2頁
計算機組成與設(shè)計課內(nèi)實驗指導(dǎo)_第3頁
計算機組成與設(shè)計課內(nèi)實驗指導(dǎo)_第4頁
計算機組成與設(shè)計課內(nèi)實驗指導(dǎo)_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

-.z."計算機組成與設(shè)計"課實驗指導(dǎo)實驗一可執(zhí)行程序的生成〔第1章〕一、實驗?zāi)康模和ㄟ^了解高級語言源程序和目標機器代碼的不同表示及其相互轉(zhuǎn)換,深刻理解高級語言和機器語言之間的關(guān)系,以及機器語言和不同體系構(gòu)造之間的關(guān)系。二、實驗要求:對教材1.4.5節(jié)給出的三、實驗步驟:1.在Windos環(huán)境下用任意一個編輯器編寫hello.c程序,拷貝到E:\OpenMIPS目錄下。2.將Windos環(huán)境下E:\OpenMIPS\hello.c源程序拷貝到虛擬機/home/目錄下?!?〕翻開VisualBo*,界面如圖1所示。圖1VisualBo*主界面〔2〕雙擊OpenRISC_Ubuntu圖標,啟動虛擬機,界面如圖2所示?!?〕翻開命令終端,如圖3所示,在命令行輸入sudomount–tvbo*sfOpenMIPS/mnt/回車,輸入openrisc密碼,然后翻開虛擬機左上角文件夾,按照目錄層次翻開/mnt/文件夾,將/mnt下的hello.c源程序拷貝到當前〔/home/〕目錄下。圖2虛擬機桌面圖3命令終端3.在虛擬機環(huán)境下將hello.c編譯為MIPS匯編程序?!?〕在命令行輸入mips,在連按兩次Tab鍵,看到如圖4所示的mips編譯工具列表。圖4MIPS編譯工具〔2〕如查看mips-sde-elf-gcc命令使用說明,只要在命令行輸入mips-sde-elf-gcc--help。〔3〕編譯hello.c源程序為匯編代碼:在命令行輸入mips-sde-elf-gcc–Shello.c回車即可,在當前目錄下就生成hello.s匯編程序。4.將匯編程序匯編為二進制機器代碼:在命令行輸入mips-sde-elf-as–mips32hello.s-ohello.o回車即可,在當前目錄下就生成hello.o目標代碼。5.進展成可執(zhí)行目標文件。將〔/opt/mips-4.3/mips-sde-elf/lib〕安裝目錄下的malta-24kc-ram-hosted.ld文件拷貝到當前〔/home/〕目錄下,在命令行輸入mips-sde-elf-ld–Tmalta-24kc-ram-hosted.ldhello.o–ohello.om,此命令如有問題,用gcc直接編譯、匯編、成可執(zhí)行文件,即在命令行輸入mips-sde-elf-gcc–Tmalta-24kc-ram-hosted.ldhello.c–ohello.om即可。6.在命令行輸入mips-sde-elf-runhello.om即可看到運行結(jié)果。7.在虛擬機環(huán)境下查看編譯、匯編、后的結(jié)果。例如在命令行輸入cathello.s即可看到編譯結(jié)果。8.同時在命令行輸入mips-sde-elf-objdump–Shello.om即可看到反匯編代碼段和數(shù)據(jù)段。四、實驗報告:1.說明你做實驗的過程〔重要步驟用屏幕截圖表示〕。2.給出源程序〔文本文件〕的容〔用十六進制形式表示〕。3.給出可執(zhí)行目標文件〔二進制文件〕的容〔用十六進制形式表示〕。4.分析或答復(fù)以下問題?!?〕分析同一個源程序在不同機器上生成的可執(zhí)行目標代碼是否一樣?!?〕你能在可執(zhí)行目標文件中找出函數(shù)printf()對應(yīng)的機器代碼段嗎?能的話,請標示出來?!?〕為什么源程序文件的容和可執(zhí)行目標文件的容完全不同?實驗二數(shù)據(jù)表示和運算〔第2、3章〕一、實驗?zāi)康模?.通過無符號數(shù)和帶符號整數(shù)之間的相互轉(zhuǎn)換來理解無符號數(shù)和補碼整數(shù)的表示。2.了解IEEE754浮點數(shù)在機器中的應(yīng)用,特別是一些特殊值的處理。3.了解數(shù)據(jù)在機器中的存放方式。4.了解高級語言中數(shù)據(jù)類型的轉(zhuǎn)換和移位操作結(jié)果,從而能更好地理解指令系統(tǒng)設(shè)計和計算機硬件設(shè)計所需滿足的要求和需要考慮的問題。5.通過檢查高級語言中數(shù)據(jù)運算的不同結(jié)果,進一步理解機器代碼在CPU中的執(zhí)行過程,從而為更好地學(xué)習指令系統(tǒng)設(shè)計和CPU設(shè)計打下良好的根底。二、實驗要求:1.驗證教材表2.2中的關(guān)系表達式的結(jié)果,并編程得出第二章習題8的表中結(jié)果。2.通過編程得出float和double類型的精度〔即十進制有效位的位數(shù)〕。3.編程檢查"-8.0/0”、"sqrt〔-4.04.檢查你的機器是大端方式還是小端方式,檢查存變量〔如構(gòu)造或數(shù)組〕是否按邊界對齊。5.編程實現(xiàn)以下各種操作,分別用十進制和十六進制形式打印輸出各種操作的結(jié)果:〔1〕給定一個short型數(shù)據(jù)-12345,分別轉(zhuǎn)換為int、unsignedshort、unsignedint、float類型的數(shù)據(jù);〔2〕給定一個int型數(shù)據(jù)2147483647,分別轉(zhuǎn)換為short、unsignedshort、unsignedint、float類型的數(shù)據(jù);〔3〕給定一個float型數(shù)據(jù)123456.789e5,轉(zhuǎn)換成double型數(shù)據(jù);〔4〕給定一個double型數(shù)據(jù)123456.789e5,轉(zhuǎn)換成float型數(shù)據(jù);〔5〕按short和unsignedshort類型分別對-12345進展左移2位和右移2位操作。6.編程計算以下表達式的值,分別用十進制和十六進制形式顯示各種操作的結(jié)果:〔1〕unsignedint型數(shù)據(jù):1+4294967295=?;1-4294967295=?〔2〕int型數(shù)據(jù):2147483647+1=?;-2147483648-1=?〔3〕float型數(shù)據(jù):(1.0+123456.789e30)+(-123456.789e30)=";1.0+(123456.789e30+(-123456.789e30))="三、實驗步驟:1.編寫相關(guān)運算的C源代碼。2.翻開命令終端,在命令行輸入sudomount–tvbo*sfOpenMIPS/mnt/回車,輸入openrisc密碼,然后翻開虛擬機左上角文件夾,按照目錄層次翻開/mnt/文件夾,將/mnt下的C源程序拷貝到當前〔/home/〕目錄下。3.在命令行輸入mips-sde-elf-gcc–Tmalta-24kc-ram-hosted.ld*.c–o*.om生成可執(zhí)行文件。4.在命令行輸入mips-sde-elf-run*.om檢查相關(guān)程序運行結(jié)果。5.按照實驗一中相應(yīng)操作,對C源程序進展編譯、匯編、以及可執(zhí)行代碼的反匯編,分析相關(guān)數(shù)據(jù)在計算機部的表示和運算過程。四、實驗報告:1.說明你做實驗的過程〔重要步驟用屏幕截圖表示〕。2.分析或答復(fù)以下問題?!?〕在虛擬機上,-1用int類型和unsigedint類型表示的結(jié)果分別是多少?〔2〕float類型和double類型的精度各是多少?〔3〕無符號數(shù)和帶符號整數(shù)的擴展操作方式是否一樣?各是如何進展的?〔4〕補碼整數(shù)〔如int型數(shù)〕是否總能轉(zhuǎn)換為等值的float類型數(shù)據(jù)?為什么?〔5〕float型數(shù)據(jù)是否總能轉(zhuǎn)換成等值的double型數(shù)據(jù)?為什么?〔6〕長數(shù)被截斷成短數(shù)后可能發(fā)生什么現(xiàn)象?為什么?〔7〕將*一源程序生成的可執(zhí)行文件反匯編,分析反匯編代碼并和編譯生成的匯編代碼進展比擬。實驗三cache和程序訪問的局部性〔第4章〕一、實驗?zāi)康模?.通過實際程序的執(zhí)行,理解"存儲程序〞工作方式的自動執(zhí)行過程。2.通過檢查實際程序的存儲空間,了解數(shù)據(jù)的存儲和排列順序。3.通過實際程序的執(zhí)行結(jié)果,了解程序訪問的局部性對帶有cache的計算機系統(tǒng)性能的影響。二、實驗要求:1.將helloworld程序編譯為匯編程序在QtSpim模擬器上運行。2.編寫以下程序,修改或添加必要的語句〔如計時函數(shù)等〕,以計算和打印主體程序段的執(zhí)行時間。分別以M=100000,N=10、M=1000,N=1000、M=10,N=100000,執(zhí)行程序A和程序B,以比擬兩個程序執(zhí)行時間的長短。程序段A:a_r(intM,intN){inti,j,a[M][N];for(i=0;i<M;i++)for(j=0;j<N;j++)a[i][j]=i+j;}程序段B:a_c(intM,intN){inti,j,a[M][N];for(j=0;j<N;j++)for(i=0;i<M;i++)a[i][j]=i+j;}三、實驗步驟:1.將helloworld.s匯編程序,在QtSpim模擬環(huán)境下運行,檢查機器是大端方式還是小端方式以及存變量〔如構(gòu)造或數(shù)組〕是否按邊界對齊。2.將程序程序段A和B在實驗一的根底上編譯為匯編語言。3.按照"附錄AMIPSsim的指令列表"、"附錄CMIPSsim的匯編語言"文檔要求修改匯編程序,適合MIPSsim模擬環(huán)境。4.按照"MIPSsim使用說明"在MIPSsim模擬環(huán)境下單步運行并檢查存空間。四、實驗報告:1.說明你做實驗的過程〔重要步驟用屏幕截圖表示〕和執(zhí)行結(jié)果。2.對實驗結(jié)果進展分析,說明局部數(shù)據(jù)塊大小、數(shù)組訪問順序等和執(zhí)行時間之間的關(guān)系。五、附錄:1.SPIM模擬器安裝對于SPIM,可以將QtSpim__Windows解壓到*一目錄下,然后單擊setup.e*e或者QtSpim-mingw.msi文件,默認設(shè)置直接安裝。2.MIPSsim模擬器安裝對于MIPSsim,需要安裝Microsoft.NETFramework組件〔dotnetf*.e*e〕,然后直接運行MIPS.e*e即可。實驗四程序的機器級表示及其過程調(diào)用〔第5章〕一、實驗?zāi)康模?.理解MIPS通用存放器的使用。2.學(xué)會使用MIPS匯編語言編寫簡單的程序。3.理解高級語言過程調(diào)用的機器代碼表示及其執(zhí)行過程。二、實驗要求:對教材例5.10高級語言通過手工轉(zhuǎn)換或穿插編譯器編譯為MIPS匯編程序,然后在QtSpim模擬器上單步運行,分析堆棧使用情況和過程調(diào)用執(zhí)行過程。三、實驗步驟:1.在Windos環(huán)境下用任意一個編輯器將例子中的C語言程序補充完整。2.結(jié)合書中給出的子函數(shù)匯編,將C語言程序手工轉(zhuǎn)換為MIPS匯編語言。3.在QtSpim模擬器單步執(zhí)行,查看通用存放器和存空間的變化。四、實驗報告:1.說明你做實驗的過程〔重要步驟用屏幕截圖表示〕和執(zhí)行結(jié)果。2.對實驗結(jié)果進展分析,程序調(diào)用過程中三個子函數(shù)的棧指針、幀指針等存放器容以及堆棧的容的異同。五、附錄:1.MIPS+匯編指令根底。2.MIPS常用指令。3.See_MIPS_Run。實驗五機器指令執(zhí)行過程〔第6章〕一、實驗?zāi)康模?.了解數(shù)據(jù)通路的設(shè)計。2.了解控制器的設(shè)計。3.理解機器指令的執(zhí)行過程。二、實驗要求:將OpenMIPS模型進展綜合、仿真,分析

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論