📄 tt.core.s
字号:
mthi $0 mfhi $2 bnez $2 fail mtlo $0 mflo $2 bnez $2 fail li $2 1 mthi $2 mfhi $3 bne $3 $2 fail li $2 1 mtlo $2 mflo $3 bne $3 $2 fail li $2 -1 mthi $2 mfhi $3 bne $3 $2 fail li $2 -1 mtlo $2 mflo $3 bne $3 $2 fail .datamovf_: .asciiz "Testing MOVF\n" .text li $v0 4 # syscall 4 (print_str) la $a0 movf_ syscall li $2 0xf0 ctc1 $2 $25 li $2 1 li $3 0 li $4 2 movf $3 $2 1 bne $3 1 fail movf $3 $4 7 bne $3 1 fail .datamovn_: .asciiz "Testing MOVN\n" .text li $v0 4 # syscall 4 (print_str) la $a0 movn_ syscall li $2 2 li $3 3 li $4 4 movn $4 $3 $0 bne $4 4 fail movn $4 $3 $2 bne $4 3 fail .datamovt_: .asciiz "Testing MOVT\n" .text li $v0 4 # syscall 4 (print_str) la $a0 movt_ syscall li $2 0xf ctc1 $2 $25 li $2 1 li $3 0 li $4 2 movt $3 $2 1 bne $3 1 fail movt $3 $4 7 bne $3 1 fail .datamovz_: .asciiz "Testing MOVZ\n" .text li $v0 4 # syscall 4 (print_str) la $a0 movz_ syscall li $2 2 li $3 3 li $4 4 movz $4 $3 $2 bne $4 4 fail movz $4 $3 $0 bne $4 3 fail .datamsub_: .asciiz "Testing MSUB\n" .text li $v0 4 # syscall 4 (print_str) la $a0 msub_ syscall mthi $0 mtlo $0 msub $0 $0 mfhi $3 bnez $3 fail mflo $3 bnez $3 fail li $4, 1 msub $4 $4 mfhi $3 bne $3 0xffffffff fail mflo $3 bne $3 0xffffffff fail li $4, 1 msub $3 $4 mfhi $3 bnez $3 fail mflo $3 bnez $3 fail li $4, 0x10000 msub $4 $4 mfhi $3 bne $3 0xffffffff fail mflo $3 bne $3 0 fail .datamsubu_: .asciiz "Testing MSUBU\n" .text li $v0 4 # syscall 4 (print_str) la $a0 msubu_ syscall mthi $0 mtlo $0 msubu $0 $0 mfhi $3 bnez $3 fail mflo $3 bnez $3 fail li $4, 1 msubu $4 $4 mfhi $3 bne $3 0xffffffff fail mflo $3 bne $3 0xffffffff fail .datamul_: .asciiz "Testing MUL\n" .text li $v0 4 # syscall 4 (print_str) la $a0 mul_ syscall li $2, 1 mul $3, $2, 0 bnez $3 fail mul $3, $2, 1 bne $3 1 fail mul $3, $2, 10 bne $3 10 fail mul $2 $0 $0 bnez $2 fail mfhi $3 bnez $3 fail mflo $3 bnez $3 fail li $4, 1 mul $2 $4 $4 bne $2 1 fail mfhi $3 bnez $3 fail mflo $3 bne $3 1 fail li $4, -1 mul $2 $4 $4 bne $2 1 fail mfhi $3 bnez $3 fail mflo $3 bne $3 1 fail li $4, -1 li $5, 1 mul $2 $4 $5 bne $2 -1 fail mfhi $3 bne $3 -1 fail mflo $3 bne $3 -1 fail li $4, 0x10000 mul $2 $4 $4 bne $2 0 fail mfhi $3 bne $3 1 fail mflo $3 bne $3 0 fail li $4, 0x80000000 mul $2 $4 $4 bne $2 0 fail mfhi $3 bne $3 0x40000000 fail mflo $3 bne $3 0 fail .datamultu_: .asciiz "Testing MULTU\n" .text li $v0 4 # syscall 4 (print_str) la $a0 multu_ syscall multu $0 $0 mfhi $3 bnez $3 fail mflo $3 bnez $3 fail li $4, 1 multu $4 $4 mfhi $3 bnez $3 fail mflo $3 bne $3 1 fail li $4, -1 multu $4 $4 mfhi $3 bne $3 0xfffffffe fail mflo $3 bne $3 1 fail li $4, -1 li $5, 0 multu $4 $5 mfhi $3 bne $3 0 fail mflo $3 bne $3 0 fail li $4, -1 li $5, 1 multu $4 $5 mfhi $3 bne $3 0 fail mflo $3 bne $3 -1 fail li $4, 0x10000 multu $4 $4 mfhi $3 bne $3 1 fail mflo $3 bne $3 0 fail li $4, 0x80000000 multu $4 $4 mfhi $3 bne $3 0x40000000 fail mflo $3 bne $3 0 fail li $3, 0xcecb8f27 li $4, 0xfd87b5f2 multu $3 $4 mfhi $3 bne $3 0xcccccccb fail mflo $3 bne $3 0x7134e5de fail .datamulo_: .asciiz "Testing MULO\n"mulo1_: .asciiz "Expect an exception:\n " .text li $v0 4 # syscall 4 (print_str) la $a0 mulo_ syscall mulo $2 $0 $0 bne $2 0 fail li $4, 1 mulo $2 $4 $4 bne $2 1 fail li $4, -1 mulo $2 $4 $4 bne $2 1 fail li $4, -1 li $5, 1 mulo $2 $4 $5 bne $2 -1 fail li $v0 4 # syscall 4 (print_str) 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# SB is endian-specific .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) .dataswc1_: .asciiz "Testing SWC1\n" .align 2swc1d_: .word 0, 0 .text li $v0 4 # syscall 4 (print_str) la $a0 swc1_ syscall li $3, 0x7f7f7f7f la $2 swc1d_ mtc1 $3, $0 swc1 $f0 0($2) lw $5 0($2) bne $5 $3 fail .datas.s_: .asciiz "Testing S.S\n" .align 2s.sd_: .word 0, 0 .text li $v0 4 # syscall 4 (print_str) la $a0 s.s_ syscall li $3, 0x7f7f7f7f la $2 s.sd_ mtc1 $3, $0 s.s $f0 0($2) lw $5 0($2) bne $5 $3 fail .datasdc1_: .asciiz "Testing SDC1\n" .align 2sdc1d_: .word 0, 0 .text li $v0 4 # syscall 4 (print_str) la $a0 sdc1_ syscall li $3, 0x7f7f7f7f li $4, 0xf7f7f7f7 la $2 sdc1d_ mtc1 $3, $0 mtc1 $4, $1 sdc1 $f0 0($2) lw $5 0($2) bne $5 $3 fail lw $5 4($2) bne $5 $4 fail .datas.d_: .asciiz "Testing S.D\n" .align 2s.dd_: .word 0, 0 .text li $v0 4 # syscall 4 (print_str) la $a0 s.d_ syscall li $3, 0x7f7f7f7f li $4, 0xf7f7f7f7 la $2 s.dd_ mtc1 $3, $0 mtc1 $4, $1 s.d $f0 0($2) lw $5 0($2) bne $5 $3 fail lw $5 4($2) bne $5 $4 fail# SDC2 not tested .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 .datassnop_: .asciiz "Testing SSNOP\n" .text li $v0 4 # syscall 4 (print_str) la $a0 nop_ syscall ssnop # How do we test it?? .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 $2, 4 sw $3 swd_($2) lw $4 swd_($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# SWL is endian-specific# SWR is endian-specific .datasync_: .asciiz "Testing SYNC\n" .text li $v0 4 # syscall 4 (print_str) la $a0 nop_ syscall sync .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 # syscall 1 (print_int) li $a0 -1 syscall li $v0 4 # syscall 4 (print_str) la $a0 syscall2_ syscall lwc1 $f12 fp_sm1# syscall 2 (print_float) li $v0 2 syscall li $v0 4 # syscall 4 (print_str) la $a0 syscall2_ syscall lwc1 $f12 fp_dm2# syscall 3 (print_double) 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 .datateq_: .asciiz "Testing TEQ\nExpect one exception message:\n " .text li $v0 4 # syscall 4 (print_str) la $a0 teq_ syscall li $2 1 teq $0 $2 teq $0 $0 .datateqi_: .asciiz "Testing TEQI\nExpect one exception message:\n " .text li $v0 4 # syscall 4 (print_str) la $a0 teqi_ syscall teqi $0 4 teqi $0 0 .datatge_: .asciiz "Testing TGE\nExpect two exception messages:\n " .text li $v0 4 # syscall 4 (print_str) la $a0 tge_ syscall li $2 1 li $3 2 tge $2 $3 tge $0 $0 tge $3 $2 .data
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -