📄 tt.s
字号:
l105: li $2 1 beqz $2 fail .databge_: .asciiz "Testing BGE\n" .text li $v0 4 # syscall 4 (print_str) la $a0 bge_ syscall bge $0 $0 l106 j faill106: li $2 1 bge $0 $2 fail bge $2 $0 l107 j faill107: li $3 -1 bge $3 $2 fail bge $2 $3 l108 j faill108: bge $0 0 l109 j faill109: li $2 1 bge $0 1 fail bge $2 0 l110 j faill110: li $3 -1 bge $3 1 fail bge $2 -1 l111 j faill111: .databgeu_: .asciiz "Testing BGEU\n" .text li $v0 4 # syscall 4 (print_str) la $a0 bgeu_ syscall bgeu $0 $0 l112 j faill112: li $2 1 bgeu $0 $2 fail bgeu $2 $0 l113 j faill113: li $3 -1 bgeu $2 $3 fail bgeu $3 $2 l114 j faill114: bgeu $0 0 l115 j faill115: li $2 1 bgeu $0 1 fail bgeu $2 0 l116 j faill116: li $3 -1 bgeu $2 -1 fail bgeu $3 1 l117 j faill117: .databgt_: .asciiz "Testing BGT\n" .text li $v0 4 # syscall 4 (print_str) la $a0 bgt_ syscall bgt $0 $0 faill120: li $2 1 bgt $0 $2 fail bgt $2 $0 l121 j faill121: li $3 -1 bgt $3 $2 fail bgt $2 $3 l122 j faill122: bgt $0 0 faill123: li $2 1 bgt $0 1 fail bgt $2 0 l124 j faill124: li $3 -1 bgt $3 1 fail bgt $2 -1 l125 j faill125: .databgtu_: .asciiz "Testing BGTU\n" .text li $v0 4 # syscall 4 (print_str) la $a0 bgtu_ syscall bgtu $0 $0 faill132: li $2 1 bgtu $0 $2 fail bgtu $2 $0 l133 j faill133: li $3 -1 bgtu $2 $3 fail bgtu $3 $2 l134 j faill134: bgtu $0 0 faill135: li $2 1 bgtu $0 1 fail bgtu $2 0 l136 j faill136: li $3 -1 bgtu $2 -1 fail bgtu $3 1 l137 j faill137: .datable_: .asciiz "Testing BLE\n" .text li $v0 4 # syscall 4 (print_str) la $a0 ble_ syscall ble $0 $0 l140 j faill140: li $2 1 ble $2 $0 fail ble $0 $2 l141 j faill141: li $3 -1 ble $2 $3 fail ble $3 $2 l142 j faill142: ble $0 0 l143 j faill143: li $2 1 ble $2 0 fail ble $0 1 l144 j faill144: li $3 -1 ble $2 -1 fail ble $3 1 l145 j faill145: .datableu_: .asciiz "Testing BLEU\n" .text li $v0 4 # syscall 4 (print_str) la $a0 bleu_ syscall bleu $0 $0 l152 j faill152: li $2 1 bleu $2 $0 fail bleu $0 $2 l153 j faill153: li $3 -1 bleu $3 $2 fail bleu $2 $3 l154 j faill154: bleu $0 0 l155 j faill155: li $2 1 bleu $2 0 fail bleu $0 1 l156 j faill156: li $3 -1 bleu $3 1 fail bleu $2 -1 l157 j faill157: .datablt_: .asciiz "Testing BLT\n" .text li $v0 4 # syscall 4 (print_str) la $a0 blt_ syscall blt $0 $0 faill160: li $2 1 blt $2 $0 fail blt $0 $2 l161 j faill161: li $3 -1 blt $2 $3 fail blt $3 $2 l162 j faill162: blt $0 0 faill163: li $2 1 blt $2 0 fail blt $0 1 l164 j faill164: li $3 -1 blt $2 -1 fail blt $3 1 l165 j faill165: .databltu_: .asciiz "Testing BLTU\n" .text li $v0 4 # syscall 4 (print_str) la $a0 bltu_ syscall bltu $0 $0 faill172: li $2 1 bltu $2 $0 fail bltu $0 $2 l173 j faill173: li $3 -1 bltu $3 $2 fail bltu $2 $3 l174 j faill174: bltu $0 0 faill175: li $2 1 bltu $2 0 fail bltu $0 1 l176 j faill176: li $3 -1 bltu $3 1 fail bltu $2 -1 l177 j faill177: .databnez_: .asciiz "Testing BNEZ\n" .text li $v0 4 # syscall 4 (print_str) la $a0 bnez_ syscall bnez $0 fail li $2 1 bnez $2 l180 j faill180:# DIV and DIVU checked previously .datal_s_: .asciiz "Testing L_S\n" .text li $v0 4 # syscall 4 (print_str) la $a0 l_s_ syscall lw $2 fp_s1p5 l.s $f0 fp_s1p5 mfc1 $4 $f0 bne $2 $4 fail .datal_d_: .asciiz "Testing L_D\n" .text li $v0 4 # syscall 4 (print_str) la $a0 l_d_ syscall lw $2 fp_d1p5 lw $3 fp_d1p5+4 l.d $f0 fp_d1p5 mfc1 $4 $f0 mfc1 $5 $f1 bne $2 $4 fail bne $3 $5 fail# LA better work or nothing above will work .datali_: .asciiz "Testing LI\n" .text li $v0 4 # syscall 4 (print_str) la $a0 li_ syscall li $2 0xfffffff bne $2 0xfffffff fail li $2 0xffffffe bne $2 0xffffffe fail li $2 0 bnez $2 fail li $2 0x7fffffff bne $2 0x7fffffff fail li $2 32767 bne $2 32767 fail li $2 32768 bne $2 32768 fail li $2 65535 bne $2 65535 fail li $2 65536 bne $2 65536 fail .datali.d_: .asciiz "Testing LI.d\n" .text li $v0 4 # syscall 4 (print_str) la $a0 li.d_ syscall li.d $f0 1.0 mfc1 $2, $f0 mfc1 $3, $f1 lw $4, fp_d1 lw $5, fp_d1+4 bne $2 $4 fail bne $3 $5 fail li.d $f0 -1.0 mfc1 $2, $f0 mfc1 $3, $f1 lw $4, fp_dm1 lw $5, fp_dm1+4 bne $2 $4 fail bne $3 $5 fail .datali.s_: .asciiz "Testing LI.s\n" .text li $v0 4 # syscall 4 (print_str) la $a0 li.s_ syscall li.s $f0 1.0 mfc1 $2, $f0 lw $3, fp_s1 bne $2 $3 fail li.s $f0 -1.0 mfc1 $2, $f0 lw $3, fp_sm1 bne $2 $3 fail .datamove_: .asciiz "Testing MOVE\n" .text li $v0 4 # syscall 4 (print_str) la $a0 move_ syscall li $2 0xfffffff move $3 $2 bne $2 $3 fail# MUL and MULO and MULOU were tested previously .dataneg_: .asciiz "Testing NEG\n" .text li $v0 4 # syscall 4 (print_str) la $a0 neg_ syscall li $2 -101 neg $3 $2 bne $3 101 fail li $2 101 neg $2 $2 bne $2 -101 fail neg $2 $0 bne $2 0 fail .datanegu_: .asciiz "Testing NEGU\n" .text li $v0 4 # syscall 4 (print_str) la $a0 negu_ syscall li $2 -101 negu $3 $2 bne $3 101 fail li $2 101 negu $2 $2 bne $2 -101 fail negu $2 $0 bne $2 0 fail .datanop_: .asciiz "Testing NOP\n" .text li $v0 4 # syscall 4 (print_str) la $a0 nop_ syscall nop # How do we test it?? .datanot_: .asciiz "Testing NOT\n" .text li $v0 4 # syscall 4 (print_str) la $a0 not_ syscall not $2 $0 bne $2 0xffffffff fail li $2 0 not $3 $2 bne $3 0xffffffff fail li $2 0xffffffff not $3 $2 bne $3 0 fail .datarem_: .asciiz "Testing REM\n" .text li $v0 4 # syscall 4 (print_str) la $a0 rem_ syscall li $2 5 li $3 2 li $4 -2 rem $5 $2 $3 bne $5 1 fail rem $5 $2 $4 bne $5 1 fail .dataremu_: .asciiz "Testing REMU\n" .text li $v0 4 # syscall 4 (print_str) la $a0 remu_ syscall li $2 5 li $3 2 li $4 -2 remu $5 $2 $3 bne $5 1 fail remu $5 $2 $4 bne $5 5 fail .datarol_: .asciiz "Testing ROL\n" .text li $v0 4 # syscall 4 (print_str) la $a0 rol_ syscall li $2 5 li $3 5 rol $4 $2 $3 bne $4 0xa0 fail li $2 5 li $3 -5 rol $4 $2 $3 bne $4 0x28000000 fail li $2 5 rol $4 $2 5 bne $4 0xa0 fail .dataror_: .asciiz "Testing ROR\n" .text li $v0 4 # syscall 4 (print_str) la $a0 ror_ syscall li $2 5 li $3 5 ror $4 $2 $3 bne $4 0x28000000 fail li $2 5 li $3 -5 ror $4 $2 $3 bne $4 0xa0 fail li $2 5 ror $4 $2 5 bne $4 0x28000000 fail .datas_s_: .asciiz "Testing S_S\n"foo: .word 0 .text li $v0 4 # syscall 4 (print_str) la $a0 s_s_ syscall lw $2 fp_s1p5 mtc1 $2 $0 s.s $f0 foo lw $4 foo bne $2 $4 fail .datas_d_: .asciiz "Testing S_D\n"bar: .word 0 0 .text li $v0 4 # syscall 4 (print_str) la $a0 s_d_ syscall lw $2 fp_d1p5 lw $3 fp_d1p5+4 mtc1 $2 $0 mtc1 $3 $1 s.d $f0 bar lw $4 bar lw $5 bar+4 bne $2 $4 fail bne $3 $5 fail .dataseq_: .asciiz "Testing SEQ\n" .text li $v0 4 # syscall 4 (print_str) la $a0 seq_ syscall li $2 -1 li $3 1 seq $4 $0 $0 beqz $4 fail seq $4 $2 $3 bnez $4 fail seq $4 $0 0 beqz $4 fail seq $4 $3 2 bnez $4 fail .datasge_: .asciiz "Testing SGE\n" .text li $v0 4 # syscall 4 (print_str) la $a0 sge_ syscall sge $4 $0 $0 beqz $4 fail li $2 1 sge $4 $0 $2 bnez $4 fail sge $4 $2 $0 beqz $4 fail li $2 -1 sge $4 $0 $2 beqz $4 fail sge $4 $2 $0 bnez $4 fail li $2 1 sge $2 $0 $2 bnez $2 fail li $2 1 sge $2 $2 $0 beqz $2 fail li $2 -1 sge $2 $0 $2 beqz $2 fail li $2 -1 sge $2 $2 $0 bnez $2 fail sge $4 $0 0 beqz $4 fail li $2 1 sge $4 $0 1 bnez $4 fail sge $4 $2 0 beqz $4 fail li $2 -1 sge $4 $0 -1 beqz $4 fail sge $4 $2 0 bnez $4 fail .datasgeu_: .asciiz "Testing SGEU\n" .text li $v0 4 # syscall 4 (print_str) la $a0 sgeu_ syscall sgeu $4 $0 $0 beqz $4 fail li $2 1 sgeu $4 $0 $2 bnez $4 fail sgeu $4 $2 $0 beqz $4 fail li $2 -1 sgeu $4 $0 $2 bnez $4 fail sgeu $4 $2 $0 beqz $4 fail sgeu $4 $0 0 beqz $4 fail li $2 1 sgeu $4 $0 1 bnez $4 fail sgeu $4 $2 0 beqz $4 fail li $2 -1 sgeu $4 $0 -1 bnez $4 fail sgeu $4 $2 0 beqz $4 fail .datasgt_: .asciiz "Testing SGT\n" .text li $v0 4 # syscall 4 (print_str) la $a0 sgt_ syscall sgt $4 $0 $0 bnez $4 fail li $2 1 sgt $4 $0 $2 bnez $4 fail sgt $4 $2 $0 beqz $4 fail li $2 -1 sgt $4 $0 $2 beqz $4 fail sgt $4 $2 $0 bnez $4 fail sgt $4 $0 0 bnez $4 fail sgt $4 $0 1 bnez $4 fail li $2 1 sgt $4 $2 0 beqz $4 fail sgt $4 $0 -1 beqz $4 fail li $2 -1 sgt $4 $2 0 bnez $4 fail .datasgtu_: .asciiz "Testing SGTU\n" .text li $v0 4 # syscall 4 (print_str) la $a0 sgtu_ syscall sgtu $4 $0 $0 bnez $4 fail li $2 1 sgtu $4 $0 $2 bnez $4 fail sgtu $4 $2 $0 beqz $4 fail li $2 -1 sgtu $4 $0 $2 bnez $4 fail sgtu $4 $2 $0 beqz $4 fail sgtu $4 $0 0 bnez $4 fail sgtu $4 $0 1 bnez $4 fail li $2 1 sgtu $4 $2 0 beqz $4 fail sgtu $4 $0 -1 bnez $4 fail li $2 -1 sgtu $4 $2 0 beqz $4 fail .datasle_: .asciiz "Testing SLE\n" .text li $v0 4 # syscall 4 (print_str) la $a0 sle_ syscall sle $4 $0 $0 beqz $4 fail li $2 1 sle $4 $0 $2 beqz $4 fail sle $4 $2 $0 bnez $4 fail li $2 -1 sle $4 $0 $2 bnez $4 fail sle $4 $2 $0 beqz $4 fail li $2 1 sle $2 $0 $2 beqz $2 fail li $2 1 sle $2 $2 $0 bnez $2 fail li $2 -1 sle $2 $0 $2 bnez $2 fail li $2 -1 sle $2 $2 $0 beqz $2 fail sle $4 $0 0 beqz $4 fail li $2 1 sle $4 $0 1 beqz $4 fail sle $4 $2 0 bnez $4 fail li $2 -1 sle $4 $0 -1 bnez $4 fail sle $4 $2 0 beqz $4 fail .datasleu_: .asciiz "Testing SLEU\n" .text li $v0 4 # syscall 4 (print_str) la $a0 sleu_ syscall sleu $4 $0 $0 beqz $4 fail li $2 1 sleu $4 $0 $2 beqz $4 fail sleu $4 $2 $0 bnez $4 fail li $2 -1 sleu $4 $0 $2 beqz $4 fail sleu $4 $2 $0 bnez $4 fail sleu $4 $0 0 beqz $4 fail li $2 1 sleu $4 $0 1 beqz $4 fail sleu $4 $2 0 bnez $4 fail li $2 -1 sleu $4 $0 -1 beqz $4 fail sleu $4 $2 0 bnez $4 fail .datasne_: .asciiz "Testing SNE\n" .text li $v0 4 # syscall 4 (print_str) la $a0 sne_ syscall li $2 -1 li $3 1 sne $4 $0 $0 bnez $4 fail sne $4 $2 $3 beqz $4 fail sne $4 $0 0 bnez $4 fail sne $4 $3 2 beqz $4 fail .dataulh_: .asciiz "Testing ULH\n"ulh1_: .byte 1 2 3 4 5 6 7 8ulh2_: .byte 0xff 0xff .text li $v0 4 # syscall 4 (print_str) la $a0 ulh_ syscall la $2 ulh1_ ulh $3 0($2) bne $3 0x0201 fail ulh $3 1($2) bne $3 0x0302 fail ulh $3 2($2) bne $3 0x0403 fail ulh $3 3($2) bne $3 0x0504 fail ulh $3 4($2) bne $3 0x0605 fail la $2 ulh2_ ulh $3 0($2) bne $3 -1 fail .dataulhu_: .asciiz "Testing ULHU\n" .text li $v0 4 # syscall 4 (print_str) la $a0 ulhu_ syscall li $v0 4 # syscall 4 (print_str) la $a0 ulhu_ syscall la $2 ulh1_ ulhu $3 0($2) bne $3 0x0201 fail ulhu $3 1($2) bne $3 0x0302 fail ulhu $3 2($2) bne $3 0x0403 fail ulhu $3 3($2) bne $3 0x0504 fail ulhu $3 4($2) bne $3 0x0605 fail la $2 ulh2_ ulhu $3 0($2) bne $3 0xffff fail .dataulw_: .asciiz "Testing ULW\n" .text li $v0 4 # syscall 4 (print_str) la $a0 ulw_ syscall la $2 ulh1_ ulw $3 0($2) bne $3 0x04030201 fail ulw $3 1($2) bne $3 0x05040302 fail ulw $3 2($2) bne $3 0x06050403 fail ulw $3 3($2) bne $3 0x07060504 fail .dataush_: .asciiz "Testing USH\n"ushd: .word 0 0 .text li $v0 4 # syscall 4 (print_str) la $a0 ush_ syscall la $2 ushd sw $0 0($2) sw $0 4($2) li $3 0x01020304 ush $3 0($2) lw $4 0($2) bne $4 0x0304 fail lw $4 4($2) bne $4 0 fail sw $0 0($2) sw $0 4($2) li $3 0x01020304 ush $3 1($2) lw $4 0($2) bne $4 0x030400 fail lw $4 4($2) bne $4 0 fail sw $0 0($2) sw $0 4($2) li $3 0x01020304 ush $3 2($2) lw $4 0($2) bne $4 0x03040000 fail lw $4 4($2) bne $4 0 fail sw $0 0($2) sw $0 4($2) li $3 0x01020304 ush $3 3($2) lw $4 0($2) bne $4 0x04000000 fail lw $4 4($2) bne $4 0x03 fail .datausw_: .asciiz "Testing USW\n" .text li $v0 4 # syscall 4 (print_str) la $a0 usw_ syscall la $2 ushd sw $0 0($2) sw $0 4($2) li $3 -1 usw $3 0($2) lw $4 0($2) bne $4 -1 fail lw $4 4($2) bne $4 0 fail sw $0 0($2) sw $0 4($2) li $3 -1 usw $3 1($2) lw $4 0($2) bne $4 0xffffff00 fail lw $4 4($2) bne $4 0xff fail sw $0 0($2) sw $0 4($2) li $3 -1 usw $3 2($2) lw $4 0($2) bne $4 0xffff0000 fail lw $4 4($2) bne $4 0xffff fail sw $0 0($2) sw $0 4($2) li $3 -1 usw $3 3($2) lw $4 0($2) bne $4 0xff000000 fail lw $4 4($2) bne $4 0xffffff fail .dataword_: .asciiz "Testing .WORD\n" .text li $v0 4 # syscall 4 (print_str) la $a0 word_ syscall .data .align 0wordd: .byte 0x1 .word 0x2345678 .word 0x9abcdef .text la $2 wordd lwr $3 1($2) lwl $3 4($2) bne $3 0x2345678 fail lwr $3 5($2) lwl $3 8($2) bne $3 0x9abcdef fail .data .byte 0x: .word OK # Forward reference in unaligned data! .text lw $8 x beq $8 $0 failOK:# Done !!! .datasm: .asciiz "\nPassed all tests\n" .text li $v0 4 # syscall 4 (print_str) la $a0 sm syscall lw $31 saved_ret_pc jr $31 # Return from main .datafm: .asciiz "Failed test\n" .textfail: li $v0 4 # syscall 4 (print_str) la $a0 fm syscall li $v0, 10 # syscall 10 (exit) syscall .text 0x408000far_away: beq $0, $0, come_back
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -