New Hardware Git
This commit is contained in:
BIN
CPU/Flow/mips-cpu-logisim-master/Mars4_5.jar
Normal file
BIN
CPU/Flow/mips-cpu-logisim-master/Mars4_5.jar
Normal file
Binary file not shown.
41
CPU/Flow/mips-cpu-logisim-master/README.md
Normal file
41
CPU/Flow/mips-cpu-logisim-master/README.md
Normal file
@@ -0,0 +1,41 @@
|
||||
## mips-cpu-logisim
|
||||
Logisim实现的五级流水线MIPS CPU
|
||||
|
||||
参考自 [华中科技大学MOOC-计算机硬件系统设计](https://www.icourse163.org/course/HUST-1205809816)
|
||||
|
||||
## 指令集
|
||||
实现MIPS指令集子集(24条指令):
|
||||
|
||||
- R型移位指令:sll、sra、srl
|
||||
- R型算数指令:add、addu、sub
|
||||
- R型逻辑运算指令:and、or、nor
|
||||
- R型比较指令:slt、sltu
|
||||
- R型分支指令:jr
|
||||
- R型系统调用:syscall
|
||||
> if $v0 = 34 数码管显示$a0值
|
||||
>
|
||||
> else 暂停 等待Go按钮按下
|
||||
|
||||
|
||||
- I型分支指令:beq、bne
|
||||
- I型立即数运算指令:addi、addiu、slti、andi、ori
|
||||
- I型访存指令:lw、sw
|
||||
- J型分支指令:j、jal
|
||||
|
||||
|
||||
## 运行
|
||||
- 使用logisim-2.7.1cn.jar或logisim-ita-cn-1204.exe
|
||||
- 打开相应.circ文件
|
||||
- 指令存储器加载测试数据镜像(test目录下)
|
||||
- ctrl-k运行
|
||||
|
||||
## 运行示例
|
||||
运行递归斐波拉契程序如下所示:
|
||||
|
||||

|
||||
|
||||
## To-Do
|
||||
- 中断
|
||||
- 总线
|
||||
- IO
|
||||
|
||||
17405
CPU/Flow/mips-cpu-logisim-master/cpu24 - 重定向.circ
Normal file
17405
CPU/Flow/mips-cpu-logisim-master/cpu24 - 重定向.circ
Normal file
File diff suppressed because it is too large
Load Diff
25154
CPU/Flow/mips-cpu-logisim-master/cpu24.circ
Normal file
25154
CPU/Flow/mips-cpu-logisim-master/cpu24.circ
Normal file
File diff suppressed because it is too large
Load Diff
BIN
CPU/Flow/mips-cpu-logisim-master/cs3410.jar
Normal file
BIN
CPU/Flow/mips-cpu-logisim-master/cs3410.jar
Normal file
Binary file not shown.
BIN
CPU/Flow/mips-cpu-logisim-master/logisim-2.7.1cn.jar
Normal file
BIN
CPU/Flow/mips-cpu-logisim-master/logisim-2.7.1cn.jar
Normal file
Binary file not shown.
BIN
CPU/Flow/mips-cpu-logisim-master/logisim-ita-cn-1204.exe
Normal file
BIN
CPU/Flow/mips-cpu-logisim-master/logisim-ita-cn-1204.exe
Normal file
Binary file not shown.
BIN
CPU/Flow/mips-cpu-logisim-master/mips指令反汇编探针.jar
Normal file
BIN
CPU/Flow/mips-cpu-logisim-master/mips指令反汇编探针.jar
Normal file
Binary file not shown.
BIN
CPU/Flow/mips-cpu-logisim-master/pic/cpu.jpg
Normal file
BIN
CPU/Flow/mips-cpu-logisim-master/pic/cpu.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 288 KiB |
BIN
CPU/Flow/mips-cpu-logisim-master/pic/fib.gif
Normal file
BIN
CPU/Flow/mips-cpu-logisim-master/pic/fib.gif
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1014 KiB |
341
CPU/Flow/mips-cpu-logisim-master/test/benchmark.asm
Normal file
341
CPU/Flow/mips-cpu-logisim-master/test/benchmark.asm
Normal file
@@ -0,0 +1,341 @@
|
||||
#############################################################
|
||||
#<EFBFBD><EFBFBD><EFBFBD><EFBFBD>j,jal,jrָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD>ɷֿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԣ<EFBFBD>ִ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>15<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> revise date 2015/12/17 tiger
|
||||
#############################################################
|
||||
.text
|
||||
addi $s1,$zero, 1 #<EFBFBD><EFBFBD><EFBFBD><EFBFBD>j,jal,jrָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD>ɷֿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԣ<EFBFBD>ִ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>15<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
j jmp_next1
|
||||
addi $s1,$zero, 1
|
||||
addi $s2,$zero, 2
|
||||
addi $s3,$zero, 3
|
||||
jmp_next1:
|
||||
j jmp_next2
|
||||
addi $s1,$zero, 1
|
||||
addi $s2,$zero, 2
|
||||
addi $s3,$zero, 3
|
||||
jmp_next2:
|
||||
j jmp_next3
|
||||
addi $s1,$zero, 1
|
||||
addi $s2,$zero, 2
|
||||
addi $s3,$zero, 3
|
||||
jmp_next3:
|
||||
j jmp_next4
|
||||
addi $s1,$zero, 1
|
||||
addi $s2,$zero, 2
|
||||
addi $s3,$zero, 3
|
||||
jmp_next4:jal jmp_count
|
||||
|
||||
######################################
|
||||
|
||||
|
||||
#<EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>Ҫ֧<EFBFBD>ֳ<EFBFBD>addi,sll,add,syscall,srl,sll,sra,beq,j,syscall revise date:2015/12/16 tiger
|
||||
|
||||
.text
|
||||
addi $s0,$zero,1 #<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD>ѭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԣ<EFBFBD>0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD>dz<EFBFBD>ʼֵ1<EFBFBD><EFBFBD><EFBFBD><EFBFBD>1λ<EFBFBD>ظ<EFBFBD>15<EFBFBD>ε<EFBFBD>ֵ<EFBFBD><EFBFBD>1<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ۼ<EFBFBD>ֵ
|
||||
addi $s1,$zero,1
|
||||
sll $s1, $s1, 31 #<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>31λ $s1=0x80000000
|
||||
|
||||
|
||||
###################################################################
|
||||
# <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʋ<EFBFBD><EFBFBD><EFBFBD>
|
||||
# <EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ0x80000000 0x20000000 0x08000000 0x02000000 0x00800000 0x00200000 0x00080000 0x00020000 0x00008000 0x00002000 0x00000800 0x00000200 0x00000080 0x00000020 0x00000008 0x00000002 0x00000000
|
||||
###################################################################
|
||||
LogicalRightShift: #<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʋ<EFBFBD><EFBFBD>ԣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ1<EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD>
|
||||
|
||||
add $a0,$0,$s1 #display $s1 #<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʋ<EFBFBD><EFBFBD>ԣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ1<EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD>
|
||||
addi $v0,$0,34 # display hex
|
||||
syscall # we are out of here.
|
||||
|
||||
srl $s1, $s1, 2
|
||||
beq $s1, $zero, shift_next1
|
||||
j LogicalRightShift
|
||||
|
||||
shift_next1:
|
||||
|
||||
add $a0,$0,$s1 #display $s1
|
||||
addi $v0,$0,34 # display hex
|
||||
syscall # we are out of here.
|
||||
|
||||
|
||||
###################################################################
|
||||
# <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʋ<EFBFBD><EFBFBD><EFBFBD>
|
||||
# <EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ0x00000004 0x00000010 0x00000040 0x00000100 0x00000400 0x00001000 0x00004000 0x00010000 0x00040000 0x00100000 0x00400000 0x01000000 0x04000000 0x10000000 0x40000000 0x00000000
|
||||
###################################################################
|
||||
|
||||
addi $s1,$zero, 1 # <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʋ<EFBFBD><EFBFBD><EFBFBD>
|
||||
LogicalLeftShift: #<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʋ<EFBFBD><EFBFBD>ԣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ1<EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD>
|
||||
sll $s1, $s1, 2
|
||||
|
||||
add $a0,$0,$s1 #display $s1
|
||||
addi $v0,$0,34 # display hex
|
||||
syscall # we are out of here.
|
||||
|
||||
beq $s1, $zero, ArithRightShift
|
||||
j LogicalLeftShift
|
||||
|
||||
|
||||
###################################################################
|
||||
# <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʋ<EFBFBD><EFBFBD><EFBFBD>
|
||||
# <EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ0x80000000 0xf0000000 0xff000000 0xfff00000 0xffff0000 0xfffff000 0xffffff00 0xfffffff0 0xffffffff
|
||||
###################################################################
|
||||
ArithRightShift: #<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʋ<EFBFBD><EFBFBD>ԣ<EFBFBD>#<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD>ԣ<EFBFBD>80000000<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾΪF0000000,FF000000,FFF00000,FFFF0000ֱ<EFBFBD><EFBFBD>FFFFFFFF
|
||||
|
||||
addi $s1,$zero,1 # <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʋ<EFBFBD><EFBFBD><EFBFBD>
|
||||
sll $s1, $s1, 31 #<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>31λ $s1=0x80000000
|
||||
|
||||
add $a0,$0,$s1 #display $s1
|
||||
addi $v0,$0,34 # display hex
|
||||
syscall # we are out of here.
|
||||
|
||||
sra $s1, $s1, 3 #$s1=0X80000000-->0XF0000000
|
||||
|
||||
add $a0,$0,$s1 #display $s1
|
||||
addi $v0,$0,34 # display hex
|
||||
syscall # we are out of here.
|
||||
|
||||
|
||||
sra $s1, $s1, 4 #0XF0000000-->0XFF000000
|
||||
|
||||
add $a0,$0,$s1 #display $s1
|
||||
addi $v0,$0,34 # display hex
|
||||
syscall # we are out of here.
|
||||
|
||||
|
||||
sra $s1, $s1, 4 #0XFF000000-->0XFFF00000
|
||||
|
||||
add $a0,$0,$s1 #display $s1
|
||||
addi $v0,$0,34 # display hex
|
||||
syscall # we are out of here.
|
||||
|
||||
sra $s1, $s1, 4
|
||||
|
||||
add $a0,$0,$s1 #display $s1
|
||||
addi $v0,$0,34 # display hex
|
||||
syscall # we are out of here.
|
||||
|
||||
sra $s1, $s1, 4
|
||||
|
||||
add $a0,$0,$s1 #display $s1
|
||||
addi $v0,$0,34 # display hex
|
||||
syscall # we are out of here.
|
||||
|
||||
|
||||
sra $s1, $s1, 4
|
||||
|
||||
add $a0,$0,$s1 #display $s1
|
||||
addi $v0,$0,34 # display hex
|
||||
syscall # we are out of here.
|
||||
|
||||
|
||||
sra $s1, $s1, 4
|
||||
|
||||
add $a0,$0,$s1 #display $s1
|
||||
addi $v0,$0,34 # display hex
|
||||
syscall # we are out of here.
|
||||
|
||||
|
||||
sra $s1, $s1, 4
|
||||
|
||||
|
||||
add $a0,$0,$s1 #display $s1
|
||||
addi $v0,$0,34 # display hex
|
||||
syscall # we are out of here.
|
||||
|
||||
#############################################################
|
||||
#<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʋ<EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>addi,andi,sll,srl,sra,or,ori,nor,syscall LED<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʒ<EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#############################################################
|
||||
|
||||
.text
|
||||
addi $s0,$zero,1
|
||||
sll $s3, $s0, 31 # $s3=0x80000000
|
||||
sra $s3, $s3, 31 # $s3=0xFFFFFFFF
|
||||
addu $s0,$zero,$zero # $s0=0
|
||||
addi $s2,$zero,12
|
||||
|
||||
addiu $s6,$0,3 #<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><EFBFBD><EFBFBD>
|
||||
zmd_loop:
|
||||
|
||||
addiu $s0, $s0, 1 #<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
andi $s0, $s0, 15
|
||||
|
||||
#######################################
|
||||
addi $t0,$0,8
|
||||
addi $t1,$0,1
|
||||
left:
|
||||
|
||||
sll $s3, $s3, 4 #<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
or $s3, $s3, $s0
|
||||
|
||||
add $a0,$0,$s3 # display $s3
|
||||
addi $v0,$0,34 # system call for LED display
|
||||
syscall # display
|
||||
|
||||
sub $t0,$t0,$t1
|
||||
bne $t0,$0,left
|
||||
#######################################
|
||||
|
||||
addi $s0, $s0, 1 #<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
addi $t8,$0,15
|
||||
and $s0, $s0, $t8
|
||||
sll $s0, $s0, 28
|
||||
|
||||
addi $t0,$0,8
|
||||
addi $t1,$0,1
|
||||
|
||||
zmd_right:
|
||||
|
||||
srl $s3, $s3, 4 #<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
or $s3, $s3, $s0
|
||||
|
||||
addu $a0,$0,$s3 # display $s3
|
||||
addi $v0,$0,34 # system call for LED display
|
||||
syscall # display
|
||||
|
||||
sub $t0,$t0,$t1
|
||||
bne $t0,$0,zmd_right
|
||||
srl $s0, $s0, 28
|
||||
#######################################
|
||||
|
||||
sub $s6,$s6,$t1
|
||||
beq $s6,$0, exit
|
||||
j zmd_loop
|
||||
|
||||
exit:
|
||||
|
||||
add $t0,$0,$0
|
||||
nor $t0,$t0,$t0 #test nor ori
|
||||
sll $t0,$t0,16
|
||||
ori $t0,$t0,0xffff
|
||||
|
||||
addu $a0,$0,$t0 # display $t0
|
||||
addi $v0,$0,34 # system call for LED display
|
||||
syscall # display
|
||||
#################################################################################
|
||||
#<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><EFBFBD>0-15<EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD>Ԫ<EFBFBD>Ľ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD>˳<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>mars mips<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>뽫Mars Setting<EFBFBD>е<EFBFBD>Memory Configuration<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΪCompact<EFBFBD><EFBFBD>data at address 0
|
||||
#
|
||||
#################################################################################
|
||||
.text
|
||||
sort_init:
|
||||
addi $s0,$0,-1
|
||||
addi $s1,$0,0
|
||||
|
||||
sw $s0,0($s1)
|
||||
addi $s0,$s0,1
|
||||
addi $s1,$s1,4
|
||||
sw $s0,0($s1)
|
||||
addi $s0,$s0,1
|
||||
addi $s1,$s1,4
|
||||
sw $s0,0($s1)
|
||||
addi $s0,$s0,1
|
||||
addi $s1,$s1,4
|
||||
sw $s0,0($s1)
|
||||
addi $s0,$s0,1
|
||||
addi $s1,$s1,4
|
||||
sw $s0,0($s1)
|
||||
addi $s0,$s0,1
|
||||
addi $s1,$s1,4
|
||||
sw $s0,0($s1)
|
||||
addi $s0,$s0,1
|
||||
addi $s1,$s1,4
|
||||
sw $s0,0($s1)
|
||||
addi $s0,$s0,1
|
||||
addi $s1,$s1,4
|
||||
sw $s0,0($s1)
|
||||
addi $s0,$s0,1
|
||||
addi $s1,$s1,4
|
||||
sw $s0,0($s1)
|
||||
addi $s0,$s0,1
|
||||
addi $s1,$s1,4
|
||||
sw $s0,0($s1)
|
||||
addi $s0,$s0,1
|
||||
addi $s1,$s1,4
|
||||
sw $s0,0($s1)
|
||||
addi $s0,$s0,1
|
||||
addi $s1,$s1,4
|
||||
sw $s0,0($s1)
|
||||
addi $s0,$s0,1
|
||||
addi $s1,$s1,4
|
||||
sw $s0,0($s1)
|
||||
addi $s0,$s0,1
|
||||
addi $s1,$s1,4
|
||||
sw $s0,0($s1)
|
||||
addi $s0,$s0,1
|
||||
addi $s1,$s1,4
|
||||
sw $s0,0($s1)
|
||||
addi $s0,$s0,1
|
||||
addi $s1,$s1,4
|
||||
sw $s0,0($s1)
|
||||
addi $s0,$s0,1
|
||||
addi $s1,$s1,4
|
||||
|
||||
addi $s0,$s0,1
|
||||
|
||||
add $s0,$zero,$zero
|
||||
addi $s1,$zero,60 #<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
sort_loop:
|
||||
lw $s3,0($s0)
|
||||
lw $s4,0($s1)
|
||||
slt $t0,$s3,$s4
|
||||
beq $t0,$0,sort_next #<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
sw $s3, 0($s1)
|
||||
sw $s4, 0($s0)
|
||||
sort_next:
|
||||
addi $s1, $s1, -4
|
||||
bne $s0, $s1, sort_loop
|
||||
|
||||
add $a0,$0,$s0 #display $s0
|
||||
addi $v0,$0,34 # display hex
|
||||
syscall # we are out of here. DISP: disp $r0, 0
|
||||
|
||||
addi $s0,$s0,4
|
||||
addi $s1,$zero,60
|
||||
bne $s0, $s1, sort_loop
|
||||
|
||||
addi $v0,$zero,50 # system call for exit
|
||||
syscall # we are out of here.
|
||||
#MIPS<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>ʵ<EFBFBD><EFBFBD>syscall
|
||||
|
||||
jmp_count: addi $s0,$zero, 0
|
||||
addi $s0,$s0, 1
|
||||
add $a0,$0,$s0
|
||||
addi $v0,$0,34 # display hex
|
||||
syscall # we are out of here.
|
||||
|
||||
addi $s0,$s0, 2
|
||||
add $a0,$0,$s0
|
||||
addi $v0,$0,34 # display hex
|
||||
syscall # we are out of here.
|
||||
|
||||
addi $s0,$s0, 3
|
||||
add $a0,$0,$s0
|
||||
addi $v0,$0,34 # display hex
|
||||
syscall # we are out of here.
|
||||
|
||||
addi $s0,$s0, 4
|
||||
add $a0,$0,$s0
|
||||
addi $v0,$0,34 # display hex
|
||||
syscall # we are out of here.
|
||||
|
||||
addi $s0,$s0, 5
|
||||
add $a0,$0,$s0
|
||||
addi $v0,$0,34 # display hex
|
||||
syscall # we are out of here.
|
||||
|
||||
addi $s0,$s0, 6
|
||||
add $a0,$0,$s0
|
||||
addi $v0,$0,34 # display hex
|
||||
syscall # we are out of here.
|
||||
|
||||
addi $s0,$s0, 7
|
||||
add $a0,$0,$s0
|
||||
addi $v0,$0,34 # display hex
|
||||
syscall # we are out of here.
|
||||
|
||||
addi $s0,$s0, 8
|
||||
add $a0,$0,$s0
|
||||
addi $v0,$0,34 # display hex
|
||||
addi $v0,$0,34 # display hex
|
||||
syscall # we are out of here.
|
||||
|
||||
|
||||
jr $31
|
||||
220
CPU/Flow/mips-cpu-logisim-master/test/benchmark.hex
Normal file
220
CPU/Flow/mips-cpu-logisim-master/test/benchmark.hex
Normal file
@@ -0,0 +1,220 @@
|
||||
v2.0 raw
|
||||
20110001
|
||||
08000c05
|
||||
20110001
|
||||
20120002
|
||||
20130003
|
||||
08000c09
|
||||
20110001
|
||||
20120002
|
||||
20130003
|
||||
08000c0d
|
||||
20110001
|
||||
20120002
|
||||
20130003
|
||||
08000c11
|
||||
20110001
|
||||
20120002
|
||||
20130003
|
||||
0c000cb8
|
||||
20100001
|
||||
20110001
|
||||
00118fc0
|
||||
00112020
|
||||
20020022
|
||||
0000000c
|
||||
00118882
|
||||
12200001
|
||||
08000c15
|
||||
00112020
|
||||
20020022
|
||||
0000000c
|
||||
20110001
|
||||
00118880
|
||||
00112020
|
||||
20020022
|
||||
0000000c
|
||||
12200001
|
||||
08000c1f
|
||||
20110001
|
||||
00118fc0
|
||||
00112020
|
||||
20020022
|
||||
0000000c
|
||||
001188c3
|
||||
00112020
|
||||
20020022
|
||||
0000000c
|
||||
00118903
|
||||
00112020
|
||||
20020022
|
||||
0000000c
|
||||
00118903
|
||||
00112020
|
||||
20020022
|
||||
0000000c
|
||||
00118903
|
||||
00112020
|
||||
20020022
|
||||
0000000c
|
||||
00118903
|
||||
00112020
|
||||
20020022
|
||||
0000000c
|
||||
00118903
|
||||
00112020
|
||||
20020022
|
||||
0000000c
|
||||
00118903
|
||||
00112020
|
||||
20020022
|
||||
0000000c
|
||||
00118903
|
||||
00112020
|
||||
20020022
|
||||
0000000c
|
||||
20100001
|
||||
00109fc0
|
||||
00139fc3
|
||||
00008021
|
||||
2012000c
|
||||
24160003
|
||||
26100001
|
||||
3210000f
|
||||
20080008
|
||||
20090001
|
||||
00139900
|
||||
02709825
|
||||
00132020
|
||||
20020022
|
||||
0000000c
|
||||
01094022
|
||||
1500fff9
|
||||
22100001
|
||||
2018000f
|
||||
02188024
|
||||
00108700
|
||||
20080008
|
||||
20090001
|
||||
00139902
|
||||
02709825
|
||||
00132021
|
||||
20020022
|
||||
0000000c
|
||||
01094022
|
||||
1500fff9
|
||||
00108702
|
||||
02c9b022
|
||||
12c00001
|
||||
08000c50
|
||||
00004020
|
||||
01084027
|
||||
00084400
|
||||
3508ffff
|
||||
00082021
|
||||
20020022
|
||||
0000000c
|
||||
2010ffff
|
||||
20110000
|
||||
ae300000
|
||||
22100001
|
||||
22310004
|
||||
ae300000
|
||||
22100001
|
||||
22310004
|
||||
ae300000
|
||||
22100001
|
||||
22310004
|
||||
ae300000
|
||||
22100001
|
||||
22310004
|
||||
ae300000
|
||||
22100001
|
||||
22310004
|
||||
ae300000
|
||||
22100001
|
||||
22310004
|
||||
ae300000
|
||||
22100001
|
||||
22310004
|
||||
ae300000
|
||||
22100001
|
||||
22310004
|
||||
ae300000
|
||||
22100001
|
||||
22310004
|
||||
ae300000
|
||||
22100001
|
||||
22310004
|
||||
ae300000
|
||||
22100001
|
||||
22310004
|
||||
ae300000
|
||||
22100001
|
||||
22310004
|
||||
ae300000
|
||||
22100001
|
||||
22310004
|
||||
ae300000
|
||||
22100001
|
||||
22310004
|
||||
ae300000
|
||||
22100001
|
||||
22310004
|
||||
ae300000
|
||||
22100001
|
||||
22310004
|
||||
22100001
|
||||
00008020
|
||||
2011003c
|
||||
8e130000
|
||||
8e340000
|
||||
0274402a
|
||||
11000002
|
||||
ae330000
|
||||
ae140000
|
||||
2231fffc
|
||||
1611fff8
|
||||
00102020
|
||||
20020022
|
||||
0000000c
|
||||
22100004
|
||||
2011003c
|
||||
1611fff2
|
||||
20020032
|
||||
0000000c
|
||||
20100000
|
||||
22100001
|
||||
00102020
|
||||
20020022
|
||||
0000000c
|
||||
22100002
|
||||
00102020
|
||||
20020022
|
||||
0000000c
|
||||
22100003
|
||||
00102020
|
||||
20020022
|
||||
0000000c
|
||||
22100004
|
||||
00102020
|
||||
20020022
|
||||
0000000c
|
||||
22100005
|
||||
00102020
|
||||
20020022
|
||||
0000000c
|
||||
22100006
|
||||
00102020
|
||||
20020022
|
||||
0000000c
|
||||
22100007
|
||||
00102020
|
||||
20020022
|
||||
0000000c
|
||||
22100008
|
||||
00102020
|
||||
20020022
|
||||
20020022
|
||||
0000000c
|
||||
03e00008
|
||||
61
CPU/Flow/mips-cpu-logisim-master/test/fib.asm
Normal file
61
CPU/Flow/mips-cpu-logisim-master/test/fib.asm
Normal file
@@ -0,0 +1,61 @@
|
||||
|
||||
.text
|
||||
li $s0, 0
|
||||
li $s1, 10
|
||||
addi $sp, $zero, 128
|
||||
|
||||
loop:
|
||||
move $a0, $s0
|
||||
jal fib
|
||||
|
||||
move $a0, $v0
|
||||
li $v0, 34
|
||||
syscall
|
||||
|
||||
add $s0, $s0, 1
|
||||
bne $s0, $s1, loop
|
||||
|
||||
li $v0, 10
|
||||
syscall
|
||||
|
||||
fib:
|
||||
addi $sp, $sp, -12
|
||||
sw $ra, 8($sp)
|
||||
sw $s0, 4($sp)
|
||||
sw $s1, 0($sp) # $s1 : ret
|
||||
add $s0, $a0, $zero # $s0: $a0 : n
|
||||
|
||||
bne $s0, $zero, elseif
|
||||
addi $v0, $zero, 0
|
||||
j return
|
||||
|
||||
elseif:
|
||||
addi $t0, $zero, 1
|
||||
bne $s0, $t0, else
|
||||
|
||||
addi $v0, $zero, 1
|
||||
j return
|
||||
|
||||
else:
|
||||
addi $a0, $s0, -1
|
||||
jal fib
|
||||
add $s1, $v0, $zero
|
||||
|
||||
addi $a0, $s0, -2
|
||||
jal fib
|
||||
add $s1, $s1, $v0
|
||||
|
||||
add $v0, $s1, $zero
|
||||
j return
|
||||
|
||||
return:
|
||||
lw $s1, 0($sp)
|
||||
lw $s0, 4($sp)
|
||||
lw $ra, 8($sp)
|
||||
addi $sp, $sp, 12
|
||||
jr $ra
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
38
CPU/Flow/mips-cpu-logisim-master/test/fib.txt
Normal file
38
CPU/Flow/mips-cpu-logisim-master/test/fib.txt
Normal file
@@ -0,0 +1,38 @@
|
||||
v2.0 raw
|
||||
24100000
|
||||
2411000a
|
||||
201d0080
|
||||
00102021
|
||||
0c000c0c
|
||||
00022021
|
||||
24020022
|
||||
0000000c
|
||||
22100001
|
||||
1611fff9
|
||||
2402000a
|
||||
0000000c
|
||||
23bdfff4
|
||||
afbf0008
|
||||
afb00004
|
||||
afb10000
|
||||
00808020
|
||||
16000002
|
||||
20020000
|
||||
08000c20
|
||||
20080001
|
||||
16080002
|
||||
20020001
|
||||
08000c20
|
||||
2204ffff
|
||||
0c000c0c
|
||||
00408820
|
||||
2204fffe
|
||||
0c000c0c
|
||||
02228820
|
||||
02201020
|
||||
08000c20
|
||||
8fb10000
|
||||
8fb00004
|
||||
8fbf0008
|
||||
23bd000c
|
||||
03e00008
|
||||
105
CPU/Flow/mips-cpu-logisim-master/test/sort.asm
Normal file
105
CPU/Flow/mips-cpu-logisim-master/test/sort.asm
Normal file
@@ -0,0 +1,105 @@
|
||||
.data
|
||||
|
||||
|
||||
.text
|
||||
li $s0, 0 # data addr
|
||||
li $s1, 0 # offset
|
||||
li $s2, 50 # $s2 : n
|
||||
li $sp, 4092
|
||||
nloop:
|
||||
beq $s2, $zero, exitnloop
|
||||
add $t0, $s0, $s1
|
||||
|
||||
sw $s2, 0($t0)
|
||||
|
||||
add $s1, $s1, 4
|
||||
add $s2, $s2, -1
|
||||
j nloop
|
||||
exitnloop:
|
||||
|
||||
li $a0, 0
|
||||
li $a1, 50 #<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
jal sort
|
||||
|
||||
li $v0, 10
|
||||
syscall
|
||||
|
||||
|
||||
|
||||
|
||||
#void swap(int v[], int k) {
|
||||
# int temp = v[k];
|
||||
# v[k] = v[k+1];
|
||||
# v[k+1] = temp;
|
||||
#}
|
||||
swap:
|
||||
sll $t1, $a1, 2
|
||||
add $t1, $t1, $a0 #$t1:v[k]
|
||||
|
||||
lw $t0, 0($t1) #$t0:temp
|
||||
lw $t2, 4($t1) #$t2:v[k+1]
|
||||
|
||||
sw $t2, 0($t1)
|
||||
sw $t0, 4($t1)
|
||||
|
||||
jr $ra
|
||||
|
||||
sort:
|
||||
#<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD><EFBFBD><EFBFBD>ֵ
|
||||
addi $sp, $sp, -20
|
||||
sw $ra, 16($sp)
|
||||
sw $s3, 12($sp)
|
||||
sw $s2, 8($sp)
|
||||
sw $s1, 4($sp)
|
||||
sw $s0, 0($sp)
|
||||
|
||||
#<EFBFBD>ƶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
move $s2, $a0 # $s2 : $a0
|
||||
move $s3, $a1 # $s3 : $a1
|
||||
|
||||
move $s0, $zero # $s0 : i
|
||||
for1tst:
|
||||
slt $t0, $s0, $s3
|
||||
beq $t0, $zero, exit1
|
||||
|
||||
addi $s1, $s0, -1 # $s1 : j
|
||||
for2tst:
|
||||
slti $t0, $s1, 0
|
||||
bne $t0, $zero, exit2
|
||||
|
||||
sll $t1, $s1, 2
|
||||
add $t2, $s2, $t1 # $t0 : v[j] addr
|
||||
lw $t3, 0($t2) # $t1 : v[j]
|
||||
lw $t4, 4($t2) # $t2 : v[j+1]
|
||||
|
||||
slt $t0, $t4, $t3
|
||||
beq $t0, $zero, exit2
|
||||
|
||||
move $a0, $s2
|
||||
move $a1, $s1
|
||||
jal swap
|
||||
|
||||
addi $s1, $s1, -1
|
||||
j for2tst
|
||||
|
||||
exit2:
|
||||
addi $s0, $s0, 1
|
||||
j for1tst
|
||||
|
||||
exit1:
|
||||
lw $s0, 0($sp)
|
||||
lw $s1, 4($sp)
|
||||
lw $s2, 8($sp)
|
||||
lw $s3, 12($sp)
|
||||
lw $ra, 16($sp)
|
||||
addi $sp, $sp, 20
|
||||
|
||||
jr $ra
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
57
CPU/Flow/mips-cpu-logisim-master/test/sort.txt
Normal file
57
CPU/Flow/mips-cpu-logisim-master/test/sort.txt
Normal file
@@ -0,0 +1,57 @@
|
||||
v2.0 raw
|
||||
24100000
|
||||
24110000
|
||||
24120032
|
||||
241d0ffc
|
||||
12400005
|
||||
02114020
|
||||
ad120000
|
||||
22310004
|
||||
2252ffff
|
||||
08000c04
|
||||
24040000
|
||||
24050032
|
||||
0c000c16
|
||||
2402000a
|
||||
0000000c
|
||||
00054880
|
||||
01244820
|
||||
8d280000
|
||||
8d2a0004
|
||||
ad2a0000
|
||||
ad280004
|
||||
03e00008
|
||||
23bdffec
|
||||
afbf0010
|
||||
afb3000c
|
||||
afb20008
|
||||
afb10004
|
||||
afb00000
|
||||
00049021
|
||||
00059821
|
||||
00008021
|
||||
0213402a
|
||||
11000010
|
||||
2211ffff
|
||||
2a280000
|
||||
1500000b
|
||||
00114880
|
||||
02495020
|
||||
8d4b0000
|
||||
8d4c0004
|
||||
018b402a
|
||||
11000005
|
||||
00122021
|
||||
00112821
|
||||
0c000c0f
|
||||
2231ffff
|
||||
08000c22
|
||||
22100001
|
||||
08000c1f
|
||||
8fb00000
|
||||
8fb10004
|
||||
8fb20008
|
||||
8fb3000c
|
||||
8fbf0010
|
||||
23bd0014
|
||||
03e00008
|
||||
27
CPU/Flow/mips-cpu-logisim-master/test/sum.asm
Normal file
27
CPU/Flow/mips-cpu-logisim-master/test/sum.asm
Normal file
@@ -0,0 +1,27 @@
|
||||
.text
|
||||
#<EFBFBD><EFBFBD><EFBFBD><EFBFBD>1+2+.....+100 <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD>м<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
li $t0, 101 #n
|
||||
li $t1, 1 #i
|
||||
li $t2, 0 #sum
|
||||
|
||||
loop:
|
||||
# $t2 <- $t1 + $t2
|
||||
move $a0, $t1
|
||||
move $a1, $t2
|
||||
jal sum
|
||||
move $t2, $v0
|
||||
|
||||
li $v0, 34
|
||||
move $a0, $t2
|
||||
syscall
|
||||
|
||||
add $t1, $t1, 1
|
||||
bne $t0, $t1, loop
|
||||
|
||||
li $v0, 10
|
||||
syscall
|
||||
|
||||
|
||||
sum:
|
||||
add $v0, $a0, $a1
|
||||
jr $ra
|
||||
17
CPU/Flow/mips-cpu-logisim-master/test/sum.txt
Normal file
17
CPU/Flow/mips-cpu-logisim-master/test/sum.txt
Normal file
@@ -0,0 +1,17 @@
|
||||
v2.0 raw
|
||||
24080065
|
||||
24090001
|
||||
240a0000
|
||||
00092021
|
||||
000a2821
|
||||
0c000c0e
|
||||
00025021
|
||||
24020022
|
||||
000a2021
|
||||
0000000c
|
||||
21290001
|
||||
1509fff7
|
||||
2402000a
|
||||
0000000c
|
||||
00851020
|
||||
03e00008
|
||||
Reference in New Issue
Block a user