⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tt.s

📁 用汇编语言编程源代码
💻 S
📖 第 1 页 / 共 4 页
字号:
	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 + -