📄 tt.s
字号:
la $a0 mulo1_ syscall li $4, 0x10000 mulo $2 $4 $4 bne $2 0 fail .datanor_: .asciiz "Testing NOR\n" .text li $v0 4 # syscall 4 (print_str) la $a0 nor_ syscall li $2 1 li $3 -1 nor $4 $0 $0 bne $4 -1 fail nor $4 $2 $2 bne $4 0xfffffffe fail nor $4 $2 $3 bne $4 0 fail .dataor_: .asciiz "Testing OR\n" .text li $v0 4 # syscall 4 (print_str) la $a0 or_ syscall li $2 1 li $3 -1 or $4 $0 $0 bne $4 0 fail or $4 $2 $2 bne $4 1 fail or $4 $2 $3 bne $4 -1 fail .dataori_: .asciiz "Testing ORI\n" .text li $v0 4 # syscall 4 (print_str) la $a0 ori_ syscall li $2 1 li $3 -1 ori $4 $0 0 bne $4 0 fail ori $4 $2 1 bne $4 1 fail ori $4 $2 0xffff bne $4 0x0000ffff fail# RFE tested previously .datasb_: .asciiz "Testing SB\n"sb2_: .asciiz "Expect an address error exceptions:\n " .align 2sbd_: .byte 0, 0, 0, 0 .text li $v0 4 # syscall 4 (print_str) la $a0 sb_ syscall li $3, 1 la $2 sbd_ sb $3 0($2) lw $4 0($2) bne $4 0x1 fail li $3 2 sb $3 1($2) lw $4 0($2) bne $4 0x201 fail li $3 3 sb $3 2($2) lw $4 0($2) bne $4 0x30201 fail li $3 4 sb $3 3($2) lw $4 0($2) bne $4 0x4030201 fail li $v0 4 # syscall 4 (print_str) la $a0 sb2_ syscall li $t5 0x7fffffff sb $3 1000($t5) .datasd_: .asciiz "Testing SD\n"sd2_: .asciiz "Expect two address error exceptions:\n" .align 2sdd_: .word 0, 0, 0, 0 .text li $v0 4 # syscall 4 (print_str) la $a0 sd_ syscall li $3, 0x7f7f7f7f li $4, 0xf7f7f7f7 la $2 sdd_ sd $3 0($2) ld $5 0($2) bne $3 $5 fail bne $4 $4 fail li $v0 4 # syscall 4 (print_str) la $a0 sd2_ syscall li $t5 0x7fffffff sd $3 1000($t5) sd $3 1001($t5) .datash_: .asciiz "Testing SH\n"sh2_: .asciiz "Expect two address error exceptions:\n" .align 2shd_: .byte 0, 0, 0, 0 .text li $v0 4 # syscall 4 (print_str) la $a0 sh_ syscall li $3, 1 la $2 shd_ sh $3 0($2) lw $4 0($2) bne $4 0x1 fail li $3 2 sh $3 2($2) lw $4 0($2) bne $4 0x20001 fail li $v0 4 # syscall 4 (print_str) la $a0 sh2_ syscall li $t5 0x7fffffff sh $3 1000($t5) sh $3 1001($t5) .datasll_: .asciiz "Testing SLL\n" .text li $v0 4 # syscall 4 (print_str) la $a0 sll_ syscall li $2 1 sll $3 $2 0 bne $3 1 fail sll $3 $2 1 bne $3 2 fail sll $3 $2 16 bne $3 0x10000 fail sll $3 $2 31 bne $3 0x80000000 fail .datasllv_: .asciiz "Testing SLLV\n" .text li $v0 4 # syscall 4 (print_str) la $a0 sllv_ syscall li $2 1 li $4 0 sllv $3 $2 $4 bne $3 1 fail li $4 1 sllv $3 $2 $4 bne $3 2 fail li $4 16 sllv $3 $2 $4 bne $3 0x10000 fail li $4 32 sllv $3 $2 $4 bne $3 1 fail .dataslt_: .asciiz "Testing SLT\n" .text li $v0 4 # syscall 4 (print_str) la $a0 slt_ syscall slt $3 $0 $0 bne $3 0 fail li $2 1 slt $3 $2 $0 bne $3 0 fail slt $3 $0 $2 bne $3 1 fail li $2 -1 slt $3 $2 $0 bne $3 1 fail slt $3 $0 $2 bne $3 0 fail li $2 -1 li $4 1 slt $3 $2 $4 bne $3 1 fail .dataslti_: .asciiz "Testing SLTI\n" .text li $v0 4 # syscall 4 (print_str) la $a0 slti_ syscall slti $3 $0 0 bne $3 0 fail li $2 1 slti $3 $2 0 bne $3 0 fail slti $3 $0 1 bne $3 1 fail li $2 -1 slti $3 $2 0 bne $3 1 fail slti $3 $0 -1 bne $3 0 fail li $2 -1 li $4 1 slti $3 $2 1 bne $3 1 fail slti $3 $4 -1 bne $3 0 fail .datasltiu_: .asciiz "Testing SLTIU\n" .text li $v0 4 # syscall 4 (print_str) la $a0 sltiu_ syscall sltiu $3 $0 0 bne $3 0 fail li $2 1 sltiu $3 $2 0 bne $3 0 fail sltiu $3 $0 1 bne $3 1 fail li $2 -1 sltiu $3 $2 0 bne $3 0 fail sltiu $3 $0 -1 bne $3 1 fail li $2 -1 li $4 1 sltiu $3 $2 1 bne $3 0 fail sltiu $3 $4 -1 bne $3 1 fail .datasltu_: .asciiz "Testing SLTU\n" .text li $v0 4 # syscall 4 (print_str) la $a0 sltu_ syscall sltu $3 $0 $0 bne $3 0 fail li $2 1 sltu $3 $2 $0 bne $3 0 fail sltu $3 $0 $2 bne $3 1 fail li $2 -1 sltu $3 $2 $0 bne $3 0 fail sltu $3 $0 $2 bne $3 1 fail li $2 -1 li $4 1 sltu $3 $2 $4 bne $3 0 fail .datasra_: .asciiz "Testing SRA\n" .text li $v0 4 # syscall 4 (print_str) la $a0 sra_ syscall li $2 1 sra $3 $2 0 bne $3 1 fail sra $3 $2 1 bne $3 0 fail li $2 0x1000 sra $3 $2 4 bne $3 0x100 fail li $2 0x80000000 sra $3 $2 4 bne $3 0xf8000000 fail .datasrav_: .asciiz "Testing SRAV\n" .text li $v0 4 # syscall 4 (print_str) la $a0 srav_ syscall li $2 1 li $4 0 srav $3 $2 $4 bne $3 1 fail li $4 1 srav $3 $2 $4 bne $3 0 fail li $2 0x1000 li $4 4 srav $3 $2 $4 bne $3 0x100 fail li $2 0x80000000 li $4 4 srav $3 $2 $4 bne $3 0xf8000000 fail .datasrl_: .asciiz "Testing SRL\n" .text li $v0 4 # syscall 4 (print_str) la $a0 srl_ syscall li $2 1 srl $3 $2 0 bne $3 1 fail srl $3 $2 1 bne $3 0 fail li $2 0x1000 srl $3 $2 4 bne $3 0x100 fail li $2 0x80000000 srl $3 $2 4 bne $3 0x08000000 fail .datasrlv_: .asciiz "Testing SRLV\n" .text li $v0 4 # syscall 4 (print_str) la $a0 srlv_ syscall li $2 1 li $4 0 srlv $3 $2 $4 bne $3 1 fail li $4 1 srlv $3 $2 $4 bne $3 0 fail li $2 0x1000 li $4 4 srlv $3 $2 $4 bne $3 0x100 fail li $2 0x80000000 li $4 4 srlv $3 $2 $4 bne $3 0x08000000 fail .datasub_: .asciiz "Testing SUB\n"sub1_: .asciiz "Expect an overflow exceptions:\n " .text li $v0 4 # syscall 4 (print_str) la $a0 sub_ syscall li $2 1 li $3 -1 sub $4, $0, $0 bnez $4 fail sub $4, $0, $2 bne $4 -1 fail sub $4, $2, $0 bne $4, 1 fail sub $4, $2, $3 bne $4, 2 fail sub $4, $3, $2 bne $4, -2 fail li $v0 4 # syscall 4 (print_str) la $a0 sub1_ syscall li $2 0x80000000 li $3 1 sub $4, $3, $2 .datasubu_: .asciiz "Testing SUBU\n" .text li $v0 4 # syscall 4 (print_str) la $a0 subu_ syscall li $2 1 li $3 -1 subu $4, $0, $0 bnez $4 fail subu $4, $0, $2 bne $4 -1 fail subu $4, $2, $0 bne $4, 1 fail subu $4, $2, $3 bne $4, 2 fail subu $4, $3, $2 bne $4, -2 fail li $2 0x80000000 li $3 1 subu $4, $3, $2 .datasw_: .asciiz "Testing SW\n"sw2_: .asciiz "Expect two address error exceptions:\n" .align 2swd_: .byte 0, 0, 0, 0 .text li $v0 4 # syscall 4 (print_str) la $a0 sw_ syscall li $3, 0x7f7f7f7f la $2 swd_ sw $3 0($2) lw $4 0($2) bne $4 0x7f7f7f7f fail li $v0 4 # syscall 4 (print_str) la $a0 sw2_ syscall li $t5 0x7fffffff sw $3 1000($t5) sw $3 1001($t5) lw $t0 far_away sw $0 far_away lw $t1 far_away bne $t1 $0 fail .datalswc_: .asciiz "Testing load/store word coprocessor z\n" .align 2lswcd_: .byte 0, 0, 0, 0 .text li $v0 4 # syscall 4 (print_str) la $a0 lswc_ syscall li $3, 0x7f7f7f7f la $2 lswcd_ mtc0 $3, $0 swc0 $0 0($2) lw $4 0($2) bne $4 $3 fail lwc0 $1 0($2) mfc0 $5, $1 bne $5 $3 fail li $3, 0x7f7f7f7f la $2 lswcd_ mtc1 $3, $0 swc1 $f0 0($2) lw $4 0($2) bne $4 $3 fail lwc1 $f1 0($2) mfc1 $5, $f1 bne $5 $3 fail li $3, 0x7f7f7f7f la $2 lswcd_ mtc2 $3, $0 swc2 $0 0($2) lw $4 0($2) bne $4 $3 fail lwc2 $1 0($2) mfc2 $5, $1 bne $5 $3 fail li $3, 0x7f7f7f7f la $2 lswcd_ mtc3 $3, $0 swc3 $0 0($2) lw $4 0($2) bne $4 $3 fail lwc3 $1 0($2) mfc3 $5, $1 bne $5 $3 fail .dataswl_: .asciiz "Testing SWL\n" .align 2swld_: .word 0 0 .text li $v0 4 # syscall 4 (print_str) la $a0 swl_ syscall la $2 swld_ li $3 0x01000000 swl $3 0($2) lw $4 0($2) bne $4 0x1 fail li $3 0x01020000 swl $3 1($2) lw $4 0($2) bne $4 0x0102 fail li $3 0x01020300 swl $3 2($2) lw $4 0($2) bne $4 0x010203 fail li $3 0x01020304 swl $3 3($2) lw $4 0($2) bne $4 0x01020304 fail .dataswr_: .asciiz "Testing SWR\n" .align 2swrd_: .word 0 0 .text li $v0 4 # syscall 4 (print_str) la $a0 swr_ syscall la $2 swrd_ li $3 1 swr $3 0($2) lw $4 0($2) bne $4 1 fail li $3 0x0102 swr $3 1($2) lw $4 0($2) bne $4 0x10201 fail li $3 0x010203 swr $3 2($2) lw $4 0($2) bne $4 0x2030201 fail li $3 0x01020304 swr $3 3($2) lw $4 0($2) bne $4 0x4030201 fail .datasyscall_:.asciiz "Testing SYSCALL\n"syscall1_:.asciiz "The next line should contain: -1, -1.000000, -2.000000\n"syscall2_:.asciiz ", "fp_sm1: .float -1.0fp_dm2: .double -2.0fp_c1: .float 17.18fp_c2: .float 1700.18fp_c3: .double 17.18e10fp_c4: .double 1700.18e10syscall5_:.asciiz "\n" .text li $v0 4 # syscall 4 (print_str) la $a0 syscall_ syscall li $v0 4 # syscall 4 (print_str) la $a0 syscall1_ syscall li $v0 1 li $a0 -1 syscall li $v0 4 # syscall 4 (print_str) la $a0 syscall2_ syscall lwc1 $f12 fp_sm1 li $v0 2 syscall li $v0 4 # syscall 4 (print_str) la $a0 syscall2_ syscall lwc1 $f12 fp_dm2 lwc1 $f13 fp_dm2+4 li $v0 3 syscall li $v0 4 # syscall 4 (print_str) la $a0 syscall5_ syscall li $v0 5 # syscall 5 (read_int) syscall bne $v0 17 fail li $v0 5 # syscall 5 (read_int) syscall bne $v0 1717 fail li $v0 6 # syscall 6 (read_float) syscall lwc1 $f2 fp_c1 c.eq.s $f0, $f2 bc1f fail li $v0 6 # syscall 6 (read_float) syscall lwc1 $f2 fp_c2 c.eq.s $f0, $f2 bc1f fail li $v0 7 # syscall 7 (read_double) syscall lwc1 $f2 fp_c3 lwc1 $f3 fp_c3+4 c.eq.d $f0, $f2 bc1f fail li $v0 7 # syscall 7 (read_double) syscall lwc1 $f2 fp_c4 lwc1 $f3 fp_c4+4 c.eq.d $f0, $f2 bc1f fail .dataxor_: .asciiz "Testing XOR\n" .text li $v0 4 # syscall 4 (print_str) la $a0 xor_ syscall li $2 1 li $3 -1 xor $4 $0 $0 bne $4 0 fail xor $4 $3 $3 bne $4 0 fail xor $4 $2 $3 bne $4 0xfffffffe fail .dataxori_: .asciiz "Testing XORI\n" .text li $v0 4 # syscall 4 (print_str) la $a0 xori_ syscall li $2 1 li $3 -1 xori $4 $0 0 bne $4 0 fail xori $4 $3 0xffff bne $4 0xffff0000 fail xori $4 $2 0xffff bne $4 0x0000fffe fail## Testing Floating Point Ops# .dataabs.s_:.asciiz "Testing ABS.S\n"fp_s100:.float 100.0fp_sm100:.float -100.0 .text li $v0 4 # syscall 4 (print_str) la $a0 abs.s_ syscall lw $4 fp_s100 lwc1 $f0 fp_s100 abs.s $f2 $f0 mfc1 $5 $f2 bne $4 $5 fail lwc1 $f0 fp_sm100 abs.s $f2 $f0 mfc1 $5 $f2 bne $4 $5 fail .dataabs.d_:.asciiz "Testing ABS.D\n"fp_d100:.double 100.0fp_dm100:.double -100.0 .text li $v0 4 # syscall 4 (print_str) la $a0 abs.d_ syscall lw $4 fp_d100 lw $5 fp_d100+4 lwc1 $f0 fp_d100 lwc1 $f1 fp_d100+4 abs.d $f2 $f0 mfc1 $6 $f2 mfc1 $7 $f3 bne $4 $6 fail bne $5 $7 fail lwc1 $f0 fp_dm100 lwc1 $f1 fp_dm100+4 abs.d $f2 $f0 mfc1 $6 $f2 mfc1 $7 $f3 bne $4 $6 fail bne $5 $7 fail .dataadd.s_: .asciiz "Testing ADD.S\n"fp_s0: .float 0.0fp_s1: .float 1.0 .text li $v0 4 # syscall 4 (print_str) la $a0 add.s_ syscall lw $4 fp_s0 lwc1 $f0 fp_s0 add.s $f2 $f0 $f0 mfc1 $6 $f2 bne $4 $6 fail lw $4 fp_s1 lwc1 $f0 fp_s0 lwc1 $f2 fp_s1 add.s $f4 $f0 $f2 mfc1 $6 $f4 bne $4 $6 fail lw $4 fp_s0 lwc1 $f0 fp_s1 lwc1 $f2 fp_sm1 add.s $f4 $f0 $f2 mfc1 $6 $f4 bne $4 $6 fail .dataadd.d_: .asciiz "Testing ADD.D\n"fp_d0: .double 0.0fp_d1: .double 1.0fp_dm1: .double -1.0 .text li $v0 4 # syscall 4 (print_str) la $a0 add.d_ syscall lw $4 fp_d0 lw $5 fp_d0+4 lwc1 $f0 fp_d0 lwc1 $f1 fp_d0+4 add.d $f2 $f0 $f0 mfc1 $6 $f2 mfc1 $7 $f3 bne $4 $6 fail bne $5 $7 fail lw $4 fp_d1 lw $5 fp_d1+4 lwc1 $f0 fp_d0 lwc1 $f1 fp_d0+4 lwc1 $f2 fp_d1 lwc1 $f3 fp_d1+4 add.d $f4 $f0 $f2 mfc1 $6 $f4 mfc1 $7 $f5 bne $4 $6 fail bne $5 $7 fail lw $4 fp_d0 lw $5 fp_d0+4 lwc1 $f0 fp_d1 lwc1 $f1 fp_d1+4 lwc1 $f2 fp_dm1 lwc1 $f3 fp_dm1+4 add.d $f4 $f0 $f2 mfc1 $6 $f4 mfc1 $7 $f5 bne $4 $6 fail bne $5 $7 fail# BC1F and BC1T tested below.# ToDo: Check order/unordered exception in floating point comparison. .datac.eq.d_: .asciiz "Testing C.EQ.D\n" .text li $v0 4 # syscall 4 (print_str) la $a0 c.eq.d_ syscall lwc1 $f0 fp_d1 lwc1 $f1 fp_d1+4 lwc1 $f2 fp_d1 lwc1 $f3 fp_d1+4 lwc1 $f4 fp_d1p5 lwc1 $f5 fp_d1p5+4 c.eq.d $f0 $f2 bc1f fail bc1t l200 j faill200: c.eq.d $f0 $f4 bc1t fail bc1f l201 j faill201: .datac.eq.s_: .asciiz "Testing C.EQ.S\n" .text li $v0 4 # syscall 4 (print_str) la $a0 c.eq.s_ syscall lwc1 $f0 fp_s1 lwc1 $f2 fp_s1 lwc1 $f4 fp_s1p5 c.eq.s $f0 $f2 bc1f fail bc1t l210 j faill210: c.eq.s $f0 $f4 bc1t fail bc1f l211 j faill211: .datac.f.d_: .asciiz "Testing C.F.D\n" .text li $v0 4 # syscall 4 (print_str) la $a0 c.f.d_ syscall lwc1 $f0 fp_d1 lwc1 $f1 fp_d1+4 lwc1 $f2 fp_d1 lwc1 $f3 fp_d1+4 lwc1 $f4 fp_d1p5 lwc1 $f5 fp_d1p5+4 c.f.d $f0 $f2 bc1t fail bc1f l220 j faill220: c.f.d $f0 $f4 bc1t fail bc1f l221 j faill221: .datac.f.s_: .asciiz "Testing C.F.S\n" .text li $v0 4 # syscall 4 (print_str) la $a0 c.f.s_ syscall lwc1 $f0 fp_s1 lwc1 $f2 fp_s1 lwc1 $f4 fp_s1p5 c.f.s $f0 $f2 bc1t fail bc1f l230 j faill230: c.f.s $f0 $f4 bc1t fail bc1f l231 j faill231: .datac.le.d_: .asciiz "Testing C.LE.D\n" .text li $v0 4 # syscall 4 (print_str) la $a0 c.le.d_ syscall lwc1 $f0 fp_d1 lwc1 $f1 fp_d1+4 lwc1 $f2 fp_d1p5 lwc1 $f3 fp_d1p5+4 lwc1 $f4 fp_dm2 lwc1 $f5 fp_dm2+4 c.le.d $f0 $f2 bc1f fail bc1t l240 j faill240: c.le.d $f2 $f0 bc1t fail bc1f l241 j faill241: c.le.d $f0 $f0 bc1f fail bc1t l242 j faill242: c.le.d $f4 $f0 bc1f fail bc1t l243 j faill243: .datac.le.s_: .asciiz "Testing C.LE.S\n"fp_sm2: .float -2.0 .text li $v0 4 # syscall 4 (print_str) la $a0 c.le.s_ syscall lwc1 $f0 fp_s1 lwc1 $f2 fp_s1p5 lwc1 $f4 fp_sm2 c.le.s $f0 $f2 bc1f fail bc1t l250 j faill250: c.le.s $f2 $f0 bc1t fail bc1f l251 j faill251: c.le.s $f0 $f0 bc1f fail bc1t l252 j faill252: c.le.s $f4 $f0 bc1f fail bc1t l253 j faill253: .datac.lt.d_: .asciiz "Testing C.LT.D\n" .text li $v0 4 # syscall 4 (print_str) la $a0 c.lt.d_ syscall lwc1 $f0 fp_d1 lwc1 $f1 fp_d1+4 lwc1 $f2 fp_d1p5 lwc1 $f3 fp_d1p5+4 lwc1 $f4 fp_dm2 lwc1 $f5 fp_dm2+4 c.lt.d $f0 $f2 bc1f fail bc1t l260 j faill260: c.lt.d $f2 $f0 bc1t fail bc1f l261 j faill261: c.lt.d $f0 $f0 bc1t fail bc1f l262 j faill262: c.lt.d $f4 $f0 bc1f fail bc1t l263 j faill263: .datac.lt.s_: .asciiz "Testing C.LT.S\n" .text li $v0 4 # syscall 4 (print_str) la $a0 c.lt.s_ syscall lwc1 $f0 fp_s1 lwc1 $f2 fp_s1p5 lwc1 $f4 fp_sm2 c.lt.s $f0 $f2 bc1f fail bc1t l270 j fail
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -