天天看點

計算機組成原理-實驗六-MIPS彙編器與模拟器實驗

本實驗要用到彙編器PCSpim,軟體我放到百度網盤裡面了

連結: https://pan.baidu.com/s/1dtY9xkC9MWD1jVuDkLN4aQ

密碼: d9wu

實驗要求:

1)編寫test.asm檔案,在PCSpim中打開它,并使用單步執行和連續執行方式運作該程式,不需要設定為裸機執行方式(Bare Machine)。

test.asm代碼

main:		li $v0, 5
			syscall
			move $t0, $v0
			li $v0, 5
			syscall
			move $t1, $v0
			bgt $t0, $t1, t0_bigger
			move $t2, $t1
			b endif
t0_bigger:	move $t2, $t0
endif:		move $a0, $t2
			li $v0, 1
			syscall
			jr $ra;
           

2)編寫R_CPU_Test.asm檔案,并在PCSpim中單步運作,觀察各個寄存器的值是否和預期的一緻。注意:為了能正确執行R_CPU_Test.asm程式,要将模拟器設定為裸機執行方式。

R_CPU_Test.asm代碼(#預期結果)

nor  $1 ,$0 ,$0 ;	#$1 =FFFF_FFFF  
sltu $2 ,$0 ,$1 ;	#$2 =0000_0001  
add  $3 ,$2 ,$2 ;	#$3 =0000_0002  
add  $4 ,$3 ,$2 ;	#$4 =0000_0003  
add  $5 ,$4 ,$3 ;	#$5 =0000_0005  
add  $6 ,$5 ,$3 ;	#$6 =0000_0007  
sllv $7 ,$6 ,$2 ;	#$7 =0000_000E  
add  $9 ,$5 ,$6 ;	#$9 =0000_000C  
sllv $8 ,$6 ,$9 ;	#$8 =0000_7000  
xor  $9 ,$1 ,$8 ;	#$9 =FFFF_8FFF  
add  $10,$9 ,$1 ;	#$10=FFFF_8FFE  
sub  $11,$8 ,$7 ;	#$11=0000_6FF2  
sub  $12,$7 ,$8 ;	#$12=FFFF_900E  
and  $13,$9 ,$12;	#$13=FFFF_800E  
or   $14,$9 ,$12;	#$14=FFFF_9FFF  
or   $15,$6 ,$7 ;	#$15=0000_000F  
nor  $16,$6 ,$7 ;	#$16=FFFF_FFF0  
add  $17,$7 ,$3 ;	#$17=0000_0010  
sllv $18,$8 ,$17;	#$18=7000_0000  
sllv $19,$3 ,$17;	#$19=0002_0000  
sllv $20,$19,$7 ;	#$20=8000_0000  
add  $21,$20,$1 ;	#$21=7FFF_FFFF  
or   $22,$18,$21;	#$22=7FFF_FFFF  
add  $23,$20,$22;	#$23=FFFF_FFFF  
sub  $24,$20,$22;	#$24=0000_0001  
sub  $25,$22,$20;	#$25=FFFF_FFFF  
xor  $26,$18,$1 ;	#$26=8FFF_FFFF  
sltu $27,$22,$20;	#$27=0000_0001  
sltu $28,$26,$20;	#$28=0000_0000  
add  $29,$22,$2 ;	#$29=8000_0000  
sub  $30,$20,$2 ;	#$30=7FFF_FFFF  
add  $31,$11,$26;	#$30=9000_6FF1  
           

3)将上述程式的指令代碼逐條摘錄出來,複制至ROM IP關聯檔案*.coe中,供後繼實驗使用。

PCSpim使用教程:
計算機組成原理-實驗六-MIPS彙編器與模拟器實驗
計算機組成原理-實驗六-MIPS彙編器與模拟器實驗
計算機組成原理-實驗六-MIPS彙編器與模拟器實驗
計算機組成原理-實驗六-MIPS彙編器與模拟器實驗
測試結果:

Test.asm裝載之後,一直點單步運作,程式要求我們在控制台輸入兩個數,之後輸出結果。

計算機組成原理-實驗六-MIPS彙編器與模拟器實驗

雖然看不懂彙編,根據輸入輸出,可以猜測,程式的功能就是找出較小數。

R_CPU_Test.asm裝載之後,單步運作,發現到了0x00400014就跑不動了。點選go,跳轉到0x00400024繼續單步運作。發現寄存器結果與預期完全一緻。

寄存器狀态

寄存器 内容 寄存器 内容 寄存器 内容
$0 0x00000000 $11 0x00006ff2 $22 0x70000000
$1 0xffffffff $12 0xffff900e $23 0xf0000000
$2 0x00000001 $13 0xffff800e $24 0x00000000
$3 0x00000002 $14 0xffff9fff $25 0x00000000
$4 0x00000003 $15 0x0000000f $26 0x3000ff13
$5 0x00000005 $16 0xfffffff0 $27 0xffffffff
$6 0x00000007 $17 0x00000010 $28 0x00000000
$7 0x0000000e $18 0x70000000 $29 0x70000001
$8 0x00007000 $19 0x00020000 $30 0x00000000
$9 0xffff8fff $20 0x80000000 $31 0x30016f05
$10 0xffff8ffe $21 0x00000000

儲存日志檔案(Save Log File)

計算機組成原理-實驗六-MIPS彙編器與模拟器實驗

R_CPU_Test.coe機器碼

memory_initialization_radix=16;
memory_initialization_vector=00000827 0001102b 00421820 00622020 00832820 00a33020 00463804 00a64820 01264004 
00284826 01215020 01075822 00e86022 012c6824 012c7025 00c77825 00c78027 00e38820 02289004 02239804 00f3a004 
0281a820 0255b025 0296b820 0296c022 02d4c822 0241d026 02d4d82b 0354e02b 02c2e820 0282f022 017af820;
           
心得體會:

PCSpim這個軟體需要一點點時間摸索,其他的事情并不是很難

繼續閱讀