計(jì)算機(jī)組成與設(shè)計(jì)課內(nèi)實(shí)驗(yàn)指導(dǎo)_第1頁(yè)
計(jì)算機(jī)組成與設(shè)計(jì)課內(nèi)實(shí)驗(yàn)指導(dǎo)_第2頁(yè)
計(jì)算機(jī)組成與設(shè)計(jì)課內(nèi)實(shí)驗(yàn)指導(dǎo)_第3頁(yè)
計(jì)算機(jī)組成與設(shè)計(jì)課內(nèi)實(shí)驗(yàn)指導(dǎo)_第4頁(yè)
計(jì)算機(jī)組成與設(shè)計(jì)課內(nèi)實(shí)驗(yàn)指導(dǎo)_第5頁(yè)
已閱讀5頁(yè),還剩4頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、計(jì)算機(jī)組成與設(shè)計(jì)課內(nèi)實(shí)驗(yàn)指導(dǎo)實(shí)驗(yàn)一 可執(zhí)行程序的生成(第1 章)一、實(shí)驗(yàn)?zāi)康模和ㄟ^(guò)了解高級(jí)語(yǔ)言源程序和目標(biāo)機(jī)器代碼的不同表示及其相互轉(zhuǎn)換,深刻理解高級(jí)語(yǔ)言和機(jī)器語(yǔ)言之間的關(guān)系,以及機(jī)器語(yǔ)言和不同體系結(jié)構(gòu)之間的關(guān)系。二、實(shí)驗(yàn)要求:對(duì)教材1.4.5 節(jié)給出的hello.c 源程序進(jìn)行編譯、鏈接,最終生成可執(zhí)行目標(biāo)代碼。三、實(shí)驗(yàn)步驟:1.在windos環(huán)境下用任意一個(gè)編輯器編寫(xiě)hello.c程序,拷貝到e:openmips目錄下。2.將windos環(huán)境下e:openmipshello.c源程序拷貝到虛擬機(jī)/home/目錄下。(1)打開(kāi)visualbox,界面如圖1所示。圖1 visualbox主界面

2、(2)雙擊openrisc_ubuntu圖標(biāo),啟動(dòng)虛擬機(jī),界面如圖2所示。(3)打開(kāi)命令終端,如圖3所示,在命令行輸入 sudo mount t vboxsf openmips /mnt/回車(chē),輸入openrisc密碼,然后打開(kāi)虛擬機(jī)左上角文件夾,按照目錄層次打開(kāi) /mnt/文件夾,將/mnt下的hello.c源程序拷貝到當(dāng)前(/home/)目錄下。圖2 虛擬機(jī)桌面圖3 命令終端3.在虛擬機(jī)環(huán)境下將hello.c編譯為mips匯編程序。(1)在命令行輸入 mips,在連按兩次tab鍵,看到如圖4所示的mips編譯工具列表。圖4 mips編譯工具(2)如查看mips-sde-elf-gcc命令使

3、用說(shuō)明,只要在命令行輸入mips-sde-elf-gcc -help。(3)編譯hello.c源程序?yàn)閰R編代碼:在命令行輸入mips-sde-elf-gcc s hello.c回車(chē)即可,在當(dāng)前目錄下就生成hello.s匯編程序。4.將匯編程序匯編為二進(jìn)制機(jī)器代碼:在命令行輸入mips-sde-elf-as mips32 hello.s -o hello.o回車(chē)即可,在當(dāng)前目錄下就生成hello.o目標(biāo)代碼。5.進(jìn)行鏈接成可執(zhí)行目標(biāo)文件。將(/opt/mips-4.3/mips-sde-elf/lib)安裝目錄下的malta-24kc-ram-hosted.ld文件拷貝到當(dāng)前(/home/)目錄

4、下,在命令行輸入mips-sde-elf-ld t malta-24kc-ram-hosted.ld hello.o o hello.om,此命令如有問(wèn)題,用gcc直接編譯、匯編、鏈接成可執(zhí)行文件,即在命令行輸入mips-sde-elf-gcc t malta-24kc-ram-hosted.ld hello.c o hello.om即可。6.在命令行輸入mips-sde-elf-run hello.om即可看到運(yùn)行結(jié)果。 7.在虛擬機(jī)環(huán)境下查看編譯、匯編、鏈接后的結(jié)果。例如在命令行輸入cat hello.s即可看到編譯結(jié)果。8.同時(shí)在命令行輸入mips-sde-elf-objdump s h

5、ello.om即可看到反匯編代碼段和數(shù)據(jù)段。四、實(shí)驗(yàn)報(bào)告:1. 說(shuō)明你做實(shí)驗(yàn)的過(guò)程(重要步驟用屏幕截圖表示)。2. 給出源程序(文本文件)的內(nèi)容(用十六進(jìn)制形式表示)。3. 給出可執(zhí)行目標(biāo)文件(二進(jìn)制文件)的內(nèi)容(用十六進(jìn)制形式表示)。4. 分析或回答下列問(wèn)題。(1)分析同一個(gè)源程序在不同機(jī)器上生成的可執(zhí)行目標(biāo)代碼是否相同。(2)你能在可執(zhí)行目標(biāo)文件中找出函數(shù)printf ()對(duì)應(yīng)的機(jī)器代碼段嗎?能的話,請(qǐng)標(biāo)示出來(lái)。(3)為什么源程序文件的內(nèi)容和可執(zhí)行目標(biāo)文件的內(nèi)容完全不同?實(shí)驗(yàn)二 數(shù)據(jù)表示和運(yùn)算(第2、3章)一、實(shí)驗(yàn)?zāi)康模?.通過(guò)無(wú)符號(hào)數(shù)和帶符號(hào)整數(shù)之間的相互轉(zhuǎn)換來(lái)理解無(wú)符號(hào)數(shù)和補(bǔ)碼整數(shù)的表

6、示。2.了解ieee 754 浮點(diǎn)數(shù)在機(jī)器中的應(yīng)用,特別是一些特殊值的處理。3.了解數(shù)據(jù)在機(jī)器中的存放方式。4.了解高級(jí)語(yǔ)言中數(shù)據(jù)類型的轉(zhuǎn)換和移位操作結(jié)果,從而能更好地理解指令系統(tǒng)設(shè)計(jì)和計(jì)算機(jī)硬件設(shè)計(jì)所需滿足的要求和需要考慮的問(wèn)題。5.通過(guò)檢查高級(jí)語(yǔ)言中數(shù)據(jù)運(yùn)算的不同結(jié)果,進(jìn)一步理解機(jī)器代碼在cpu 中的執(zhí)行過(guò)程,從而為更好地學(xué)習(xí)指令系統(tǒng)設(shè)計(jì)和cpu 設(shè)計(jì)打下良好的基礎(chǔ)。二、實(shí)驗(yàn)要求:1.驗(yàn)證教材表2.2 中的關(guān)系表達(dá)式的結(jié)果,并編程得出第二章習(xí)題8 的表中結(jié)果。2.通過(guò)編程得出float 和double 類型的精度(即十進(jìn)制有效位的位數(shù))。3.編程檢查“-8.0/0”、“sqrt(-4.0)

7、”的運(yùn)算結(jié)果。4.檢查你的機(jī)器是大端方式還是小端方式,檢查內(nèi)存變量(如結(jié)構(gòu)或數(shù)組)是否按邊界對(duì)齊。5.編程實(shí)現(xiàn)以下各種操作,分別用十進(jìn)制和十六進(jìn)制形式打印輸出各種操作的結(jié)果:(1) 給定一個(gè)short 型數(shù)據(jù) -12345,分別轉(zhuǎn)換為int、unsigned short、unsigned int、float 類型的數(shù)據(jù);(2) 給定一個(gè)int 型數(shù)據(jù)2147483647,分別轉(zhuǎn)換為short、unsigned short、unsigned int、float 類型的數(shù)據(jù);(3)給定一個(gè)float 型數(shù)據(jù)123456.789e5,轉(zhuǎn)換成double 型數(shù)據(jù);(4)給定一個(gè)double 型數(shù)據(jù)12

8、3456.789e5,轉(zhuǎn)換成float 型數(shù)據(jù);(5)按short 和unsigned short 類型分別對(duì)-12345 進(jìn)行左移2 位和右移2 位操作。6.編程計(jì)算下列表達(dá)式的值,分別用十進(jìn)制和十六進(jìn)制形式顯示各種操作的結(jié)果:(1)unsigned int 型數(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.789

9、e30) = ?三、實(shí)驗(yàn)步驟:1.編寫(xiě)相關(guān)運(yùn)算的c源代碼。2打開(kāi)命令終端,在命令行輸入 sudo mount t vboxsf openmips /mnt/回車(chē),輸入openrisc密碼,然后打開(kāi)虛擬機(jī)左上角文件夾,按照目錄層次打開(kāi) /mnt/文件夾,將/mnt下的c源程序拷貝到當(dāng)前(/home/)目錄下。3在命令行輸入mips-sde-elf-gcc t malta-24kc-ram-hosted.ld *.c o *.om生成可執(zhí)行文件。4在命令行輸入mips-sde-elf-run *.om檢查相關(guān)程序運(yùn)行結(jié)果。5按照實(shí)驗(yàn)一中相應(yīng)操作,對(duì)c源程序進(jìn)行編譯、匯編、鏈接以及可執(zhí)行代碼的反匯編

10、,分析相關(guān)數(shù)據(jù)在計(jì)算機(jī)內(nèi)部的表示和運(yùn)算過(guò)程。四、實(shí)驗(yàn)報(bào)告:1. 說(shuō)明你做實(shí)驗(yàn)的過(guò)程(重要步驟用屏幕截圖表示)。2. 分析或回答下列問(wèn)題。(1)在虛擬機(jī)上,-1 用int 類型和unsiged int 類型表示的結(jié)果分別是多少?(2)float類型和double 類型的精度各是多少?(3)無(wú)符號(hào)數(shù)和帶符號(hào)整數(shù)的擴(kuò)展操作方式是否相同?各是如何進(jìn)行的?(4) 補(bǔ)碼整數(shù)(如int 型數(shù))是否總能轉(zhuǎn)換為等值的float 類型數(shù)據(jù)?為什么?(5) float 型數(shù)據(jù)是否總能轉(zhuǎn)換成等值的double 型數(shù)據(jù)?為什么?(6) 長(zhǎng)數(shù)被截?cái)喑啥虜?shù)后可能發(fā)生什么現(xiàn)象?為什么?(7)將某一源程序生成的可執(zhí)行文件反匯編

11、,分析反匯編代碼并和編譯生成的匯編代碼進(jìn)行比較。實(shí)驗(yàn)三 cache和程序訪問(wèn)的局部性(第4章)一、實(shí)驗(yàn)?zāi)康模?.通過(guò)實(shí)際程序的執(zhí)行,理解“存儲(chǔ)程序”工作方式的自動(dòng)執(zhí)行過(guò)程。2.通過(guò)檢查實(shí)際程序的存儲(chǔ)空間,了解數(shù)據(jù)的存儲(chǔ)和排列順序。3.通過(guò)實(shí)際程序的執(zhí)行結(jié)果,了解程序訪問(wèn)的局部性對(duì)帶有cache 的計(jì)算機(jī)系統(tǒng)性能的影響。二、實(shí)驗(yàn)要求:1.將helloworld程序編譯為匯編程序在qtspim模擬器上運(yùn)行。2編寫(xiě)以下程序,修改或添加必要的語(yǔ)句(如計(jì)時(shí)函數(shù)等),以計(jì)算和打印主體程序段的執(zhí)行時(shí)間。分別以m=100000,n=10、m=1000,n=1000、m=10,n=100000,執(zhí)行程序a和程序

12、b,以比較兩個(gè)程序執(zhí)行時(shí)間的長(zhǎng)短。程序段a:a_r (int m,int n) int i, j, amn; for (i= 0; im; i+) for (j= 0; jn; j+) aij=i+j;程序段b:a_c (int m,int n ) int i, j, amn; for (j= 0; jn; j+) for (i=0; im; i+) aij=i+j;三、實(shí)驗(yàn)步驟:1.將hello world.s匯編程序,在qtspim模擬環(huán)境下運(yùn)行,檢查機(jī)器是大端方式還是小端方式以及內(nèi)存變量(如結(jié)構(gòu)或數(shù)組)是否按邊界對(duì)齊。2.將程序程序段a和b在實(shí)驗(yàn)一的基礎(chǔ)上編譯為匯編語(yǔ)言。3.按照附錄a

13、mipssim的指令列表、附錄c mipssim的匯編語(yǔ)言文檔要求修改匯編程序,適合mipssim模擬環(huán)境。4.按照mipssim使用說(shuō)明在mipssim模擬環(huán)境下單步運(yùn)行并檢查內(nèi)存空間。四、實(shí)驗(yàn)報(bào)告:1. 說(shuō)明你做實(shí)驗(yàn)的過(guò)程(重要步驟用屏幕截圖表示)和執(zhí)行結(jié)果。2. 對(duì)實(shí)驗(yàn)結(jié)果進(jìn)行分析,說(shuō)明局部數(shù)據(jù)塊大小、數(shù)組訪問(wèn)順序等和執(zhí)行時(shí)間之間的關(guān)系。五、附錄:1.spim模擬器安裝對(duì)于spim,可以將qtspim_9.1.7_windows解壓到某一目錄下,然后單擊setup.exe或者qtspim-mingw.msi文件,默認(rèn)設(shè)置直接安裝。2.mipssim模擬器安裝對(duì)于mipssim,需要安裝m

14、icrosoft .net framework組件(dotnetfx.exe),然后直接運(yùn)行mips.exe即可。實(shí)驗(yàn)四 程序的機(jī)器級(jí)表示及其過(guò)程調(diào)用(第5章)一、實(shí)驗(yàn)?zāi)康模?.理解mips通用寄存器的使用。2.學(xué)會(huì)使用mips匯編語(yǔ)言編寫(xiě)簡(jiǎn)單的程序。3.理解高級(jí)語(yǔ)言過(guò)程調(diào)用的機(jī)器代碼表示及其執(zhí)行過(guò)程。二、實(shí)驗(yàn)要求:對(duì)教材例5.10高級(jí)語(yǔ)言通過(guò)手工轉(zhuǎn)換或交叉編譯器編譯為mips匯編程序,然后在qtspim模擬器上單步運(yùn)行,分析堆棧使用情況和過(guò)程調(diào)用執(zhí)行過(guò)程。三、實(shí)驗(yàn)步驟:1.在windos環(huán)境下用任意一個(gè)編輯器將例子中的c語(yǔ)言程序補(bǔ)充完整。2.結(jié)合書(shū)中給出的子函數(shù)匯編,將c語(yǔ)言程序手工轉(zhuǎn)換為mips匯編語(yǔ)言。 3.在qtspim模擬器單步執(zhí)行,查看通用寄存器和內(nèi)存空間的變化。四、實(shí)驗(yàn)報(bào)告:1. 說(shuō)明你做實(shí)驗(yàn)的過(guò)程(重要步驟用屏幕截圖表示)和執(zhí)行結(jié)果。2. 對(duì)實(shí)驗(yàn)結(jié)果進(jìn)行分析,程序調(diào)用過(guò)程中三個(gè)子函數(shù)的棧指針、幀指針等寄存器內(nèi)容以及堆棧的內(nèi)容的異同。五、附錄:1.mips+匯編指令基礎(chǔ)。2.mips常用指令。3.see_mips_run。實(shí)驗(yàn)五 機(jī)器指令執(zhí)行過(guò)程(第6章)一、實(shí)驗(yàn)?zāi)康模?.了解數(shù)據(jù)通路的設(shè)計(jì)。2.了解控制器的設(shè)計(jì)。3.理解機(jī)器指令的執(zhí)行過(guò)程。二、實(shí)驗(yàn)要求:將openmips模型進(jìn)行綜合、仿真,分析數(shù)據(jù)通路與控

溫馨提示

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

評(píng)論

0/150

提交評(píng)論