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

📄 tt.alu.bare.s

📁 用汇编语言编程源代码
💻 S
📖 第 1 页 / 共 2 页
字号:
	.datasllv_:	.asciiz "Testing SLLV\n"	.text	addi $v0 $0 4	# syscall 4 (print_str)#	la $a0 sllv_	lui $a0, 0x1000	ori $a0 $a0 0x1b5	syscall	addi $2 $0 1	addi $4 $0 0	sllv $3 $2 $4	ori $5 $0 1	bne $3 $5 fail	addi $4 $0 1	sllv $3 $2 $4	ori $5 $0 2	bne $3 $5 fail	addi $4 $0 16	sllv $3 $2 $4	lui $5 0x1	ori $5 $5 0x0000	bne $3 $5 fail	addi $4 $0 32	sllv $3 $2 $4	ori $5 $0 1	bne $3 $5 fail	addu $0 $0 $0            # Nop	.dataslt_:	.asciiz "Testing SLT\n"	.text	addi $v0 $0 4	# syscall 4 (print_str)#	la $a0 slt_	lui $a0, 0x1000	ori $a0 $a0 0x1c3	syscall	ori $5 $0 1	slt $3 $0 $0	bne $3 $0 fail	addi $2 $0 1	slt $3 $2 $0	bne $3 $0 fail	slt $3 $0 $2	bne $3 $5 fail	addi $2 $0 -1	slt $3 $2 $0	bne $3 $5 fail	slt $3 $0 $2	bne $3 $0 fail	addi $2 $0 -1	addi $4 $0 1	slt $3 $2 $4	bne $3 $5 fail	addu $0 $0 $0         # Nop	.dataslti_:	.asciiz "Testing SLTI\n"	.text	addi $v0 $0 4	# syscall 4 (print_str)#	la $a0 slti_	lui $a0, 0x1000	ori $a0 $a0 0x1d0	syscall	ori $5 $0 1	slti $3 $0 0	bne $3 $0 fail	addi $2 $0 1	slti $3 $2 0	bne $3 $0 fail	slti $3 $0 1	bne $3 $5 fail	addi $2 $0 -1	slti $3 $2 0	bne $3 $5 fail	slti $3 $0 -1	bne $3 $0 fail	addi $2 $0 -1	addi $4 $0 1	slti $3 $2 1	bne $3 $5 fail	slti $3 $4 -1	bne $3 $0 fail	addu $0 $0 $0           # Nop	.datasltiu_:	.asciiz "Testing SLTIU\n"	.text	addi $v0 $0 4	# syscall 4 (print_str)#	la $a0 sltiu_	lui $a0, 0x1000	ori $a0 $a0 0x1de	syscall	ori $5 $0 1	sltiu $3 $0 0	bne $3 $0 fail	addi $2 $0 1	sltiu $3 $2 0	bne $3 $0 fail	sltiu $3 $0 1	bne $3 $5 fail	addi $2 $0 -1	sltiu $3 $2 0	bne $3 $0 fail	sltiu $3 $0 -1	bne $3 $5 fail	addi $2 $0 -1	addi $4 $0 1	sltiu $3 $2 1	bne $3 $0 fail	sltiu $3 $4 -1	bne $3 $5 fail	addu $0 $0 $0        # Nop	.datasltu_:	.asciiz "Testing SLTU\n"	.text	addi $v0 $0 4	# syscall 4 (print_str)#	la $a0 sltu_	lui $a0, 0x1000	ori $a0 $a0 0x1ed	syscall	ori $5 $0 1	sltu $3 $0 $0	bne $3 $0 fail	addi $2 $0 1	sltu $3 $2 $0	bne $3 $0 fail	sltu $3 $0 $2	bne $3 $5 fail	addi $2 $0 -1	sltu $3 $2 $0	bne $3 $0 fail	sltu $3 $0 $2	bne $3 $5 fail	addi $2 $0 -1	addi $4 $0 1	sltu $3 $2 $4	bne $3 $0 fail	addu $0 $0 $0            # Nop	.datasra_:	.asciiz "Testing SRA\n"	.text	addi $v0 $0 4	# syscall 4 (print_str)#	la $a0 sra_	lui $a0, 0x1000	ori $a0 $a0 0x1fb	syscall	addi $2 $0 1	sra $3 $2 0	ori $5 $0 1	bne $3 $5 fail	sra $3 $2 1	bne $3 $0 fail	addi $2 $0 0x1000	sra $3 $2 4	ori $5 $0 0x100	bne $3 $5 fail	lui $5 0x8000	ori $5 $5 0x0000	add $2 $0 $5	sra $3 $2 4	lui $5 0xf800	ori $5 $5 0x0000	bne $3 $5 fail	addu $0 $0 $0                # Nop	.datasrav_:	.asciiz "Testing SRAV\n"	.text	addi $v0 $0 4	# syscall 4 (print_str)#	la $a0 srav_	lui $a0, 0x1000	ori $a0 $a0 0x208	syscall	addi $2 $0 1	addi $4 $0 0	srav $3 $2 $4	ori $5 $0 1	bne $3 $5 fail	addi $4 $0 1	srav $3 $2 $4	bne $3 $0 fail	addi $2 $0 0x1000	addi $4 $0 4	srav $3 $2 $4	ori $5 $0 0x100	bne $3 $5 fail	lui $5 0x8000	ori $5 $5 0x0000	add $2 $0 $5	addi $4 $0 4	srav $3 $2 $4	lui $5 0xf800	ori $5 $5 0x0000	bne $3 $5 fail	addu $0 $0 $0           # Nop	.datasrl_:	.asciiz "Testing SRL\n"	.text	addi $v0 $0 4	# syscall 4 (print_str)#	la $a0 srl_	lui $a0, 0x1000	ori $a0 $a0 0x216	syscall	addi $2 $0 1	srl $3 $2 0	ori $5 $0 1	bne $3 $5 fail	srl $3 $2 1	bne $3 $0 fail	addi $2 $0 0x1000	srl $3 $2 4	ori $5 $0 0x100	bne $3 $5 fail	lui $5 0x8000	ori $5 $0 0x0000	add $2 $0 $5	srl $3 $2 4	lui $5 0x0800	ori $5 $0 0x0000	bne $3 $5 fail	addu $0 $0 $0           #Nop 	.datasrlv_:	.asciiz "Testing SRLV\n"	.text	addi $v0 $0 4	# syscall 4 (print_str)#	la $a0 srlv_	lui $a0, 0x1000	ori $a0 $a0 0x223	syscall	addi $2 $0 1	addi $4 $0 0	srlv $3 $2 $4	ori $5 $0 1	bne $3 $5 fail	addi $4 $0 1	srlv $3 $2 $4	bne $3 $0 fail	addi $2 $0 0x1000	addi $4 $0 4	srlv $3 $2 $4	ori $5 $0 0x100	bne $3 $5 fail	lui $5 0x8000	ori $5 $5 0x0000	add $2 $0 $5	addi $4 $0 4	srlv $3 $2 $4	lui $5 0x0800	ori $5 $5 0x0000	bne $3 $5 fail	addu $0 $0 $0                     # Nop	.datasub_:	.asciiz "Testing SUB\n"# sub1_:	.asciiz "Expect an overflow exceptions:\n  "	.text	addi $v0 $0 4	# syscall 4 (print_str)#	la $a0 sub_	lui $a0, 0x1000	ori $a0 $a0 0x231	syscall	addi $2 $0 1	addi $3 $0 -1	sub $4, $0, $0	bne $4 $0 fail	sub $4, $0, $2	addi $5 $0 -1	bne $4 $5 fail	sub $4, $2, $0	ori $5 $0 1	bne $4, $5 fail	sub $4, $2, $3	ori $5 $0 2	bne $4, $5 fail	sub $4, $3, $2	addi $5 $0 -2	bne $4, $5 fail	addu $0 $0 $0                   # Nop#	addi $v0 $0 4	# syscall 4 (print_str)#	la $a0 sub1_#	syscall#	addi $2 $0 0x80000000#	addi $3 $0 1#	sub $4, $3, $2	.datasubu_:	.asciiz "Testing SUBU\n"	.text	addi $v0 $0 4	# syscall 4 (print_str)#	la $a0 subu_	lui $a0, 0x1000	ori $a0 $a0 0x23e	syscall	addi $2 $0 1	addi $3 $0 -1	subu $4, $0, $0	bne $4 $0 fail	subu $4, $0, $2	addi $5 $0 -1	bne $4 $5 fail	subu $4, $2, $0	addi $5 $0 1	bne $4, $5 fail	subu $4, $2, $3	addi $5 $0 2	bne $4, $5 fail	subu $4, $3, $2	addi $5 $0 -2	bne $4, $5 fail	lui $5 0x8000	ori $5 $5 0x0000	add $2 $0 $5	addi $3 $0 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	addi $v0 $0 4	# syscall 4 (print_str)#	la $a0 sw_	lui $a0, 0x1000	ori $a0 $a0 0x24c	syscall#	addi $3 $0, 0x7f7f7f7f	lui $3 0x7f7f	ori $3 $3 0x7f7f#	la $2 swd_	lui $2, 0x1000	ori $2 $2 0x258	sw $3 0($2)	lw $4 0($2)	lui $5 0x7f7f	ori $5 $5 0x7f7f	bne $4 $5 fail#	addi $v0 $0 4	# syscall 4 (print_str)#	la $a0 sw2_#	syscall##	sw $3 1000000($sp)#	sw $3 1000001($sp)	.dataswl_:	.asciiz "Testing SWL\n"	.align 2swld_:	.word 0 0	.text	addi $v0 $0 4	# syscall 4 (print_str)#	la $a0 swl_	lui $a0, 0x1000	ori $a0 $a0 0x25c	syscall#	la $2 swld_	lui $2, 0x1000	ori $2 $2 0x26c#       addi $3 $0 0x01000000		lui $3 0x0100	ori $3 $3 0x0000	swl $3 0($2)	lw $4 0($2)	ori $5 $0 0x1	bne $4 $5 fail#	addi $3 $0 0x01020000	lui $3 0x0102	ori $3 $3 0x0000	swl $3 1($2)	lw $4 0($2)	ori $5 $0  0x0102	bne $4 $5 fail#	addi $3 $0 0x01020300	lui $3 0x0102	ori $3 $3 0x0300	swl $3 2($2)	lw $4 0($2)	lui $5 0x01	ori $5 $5 0x0203	bne $4 $5 fail#	addi $3 $0 0x01020304	lui $3 0x0102	ori $3 $3 0x0304	swl $3 3($2)	lw $4 0($2)	lui $5 0x0102	ori $5 $5 0x0304	bne $4 $5 fail	addu $0 $0 $0         # Nop	.dataswr_:	.asciiz "Testing SWR\n"	.align 2swrd_:	.word 0 0	.text	addi $v0 $0 4	# syscall 4 (print_str)#	la $a0 swr_	lui $a0, 0x1000	ori $a0 $a0 0x274	syscall#	la $2 swrd_	lui $2, 0x1000	ori $2 $2 0x284	addi $3 $0 1	swr $3 0($2)	lw $4 0($2)	ori $5 $0 1	bne $4 $5 fail	addi $3 $0 0x0102	swr $3 1($2)	lw $4 0($2)	lui $5 0x1	ori $5 $5 0x0201	bne $4 $5 fail#	addi $3 $0 0x010203	lui $3 0x01	ori $3 $3 0x0203	swr $3 2($2)	lw $4 0($2)	lui $5 0x203	ori $5 $5 0x0201	bne $4 $5 fail#	addi $3 $0 0x01020304	lui $3 0x0102	ori $3 $3 0x0304	swr $3 3($2)	lw $4 0($2)	lui $5 0x403	ori $5 $5 0x0201	bne $4 $5 fail	addu $0 $0 $0                     #Nop	.dataxor_:	.asciiz "Testing XOR\n"	.text	addi $v0 $0 4	# syscall 4 (print_str)#	la $a0 xor_	lui $a0, 0x1000	ori $a0 $a0 0x28c	syscall	addi $2 $0 1	addi $3 $0 -1	xor $4 $0 $0	bne $4 $0 fail	xor $4 $3 $3	bne $4 $0 fail	xor $4 $2 $3	lui $5 0xffff	ori $5 $5 0xfffe 	bne $4 $5 fail	addu $0 $0 $0                #Nop	.dataxori_:	.asciiz "Testing XORI\n"	.text	addi $v0 $0 4	# syscall 4 (print_str)#	la $a0 xori_	lui $a0, 0x1000	ori $a0 $a0 0x299	syscall	addi $2 $0 1	ori $3 $0 -1	xori $4 $0 0	bne $4 $0 fail	xori $4 $3 -1	bne $4 $0 fail	xori $4 $2 -1#	lui $5 0xffff	ori $5 $0 0xfffe	bne $4 $5 fail	.datajal_:	.asciiz "Testing JAL\n"	.text	addi $v0 $0 4	# syscall 4 (print_str)#	la $a0 jal_	lui $a0, 0x1000	ori $a0 $a0 0x2a7	syscall	jal l18	addu $0 $0 $0                # Nopl19:	j l20                        # 0x00400ea0	addu $0 $0 $0                # Nopl18:	lui $4 0x0040                # to replace la $4 l19	ori $4 $4 0x0eb0             # bare machine has a delay slot.	bne $31 $4 fail	addu $0 $0 $0                #Nop	jr $31	addu $0 $0 $0                #Nopl20:   	addu $0 $0 $0                #Nop  -- 0x00400ebc	.datajalr_:	.asciiz "Testing JALR\n"#jalr2_:	.asciiz "Expect an non-word boundary exception:\n  "	.text	addi $v0 $0 4	# syscall 4 (print_str) 0x00400ec0#	la $a0 jalr_	lui $a0, 0x1000	ori $a0 $a0 0x2b4	syscall                      #	la $2 l21	lui $2 0x0040                # 0x00400ed0	ori $2 $2 0x0ef4	addu $4 $0 $2	jalr $3, $2	addu $0 $0 $0                #Nop -- 00400ee0l23:	j l22l21:	addu $0 $0 $0             # la $4 l21  -- delay slot.	bne $3 $4 fail	addu $0 $0 $0             # Nop  -- 00400ef0	jr $3                     l22:	addu $0 $0 $0             # Nop#       li $v0 4	# syscall 4 (print_str)#	la $a0 jalr2_#	syscall#	la $2 l24#	add $2 $2 2# l24:	jalr $3 $2	.databgezal_:.asciiz "Testing BGEZAL\n"	.text	addi $v0 $0 4	# syscall 4 (print_str)#	la $a0 bgezal_	lui $a0, 0x1000           # 00400f00	ori $a0 $a0 0x2c2	syscall                   	addi $2 $0 -1	addi $3 $0 1              # 00400f10	bgezal $0 l5	addu $0 $0 $0             # Nop	j fail	addu $0 $0 $0             # Nop -- 00400f20l5:	bgezal $2 fail	addu $0 $0 $0             # Nop 	bgezal $3 l6	addu $0 $0 $0             # Nop -- 00400f30l55:	j fail	addu $0 $0 $0             # Nop l6:	lui $4 0x0040             #  la $4 l55	ori $4 $4 0x0f48          # 00400f40	bne $31 $4 fail	addu $0 $0 $0             # Nop	.databltzal_:.asciiz "Testing BLTZAL\n"	.text	addi $v0 $0 4	# syscall 4 (print_str)#	la $a0 bltzal_	lui $a0, 0x1000           # 00400f50	ori $a0 $a0 0x2d2	syscall	addi $2 $0 -1	addi $3 $0 1              # 00400f60	bltzal $0 fail	addu $0 $0 $0          # Nop	bltzal $3 fail	addu $0 $0 $0          # Nop --  00400f70l13:	bltzal $2 l15	addu $0 $0 $0          # Nop l14:	j fail	addu $0 $0 $0          # Nop --  00400f80l15:	lui $4 0x0040          # la $4 l14	ori $4 $4 0x0f90	bne $31 $4 fail	addu $0 $0 $0          # Nop --  00400f90# Testing the exceptions	.databreak_:	.asciiz "Testing BREAK\nExpect an exception message:\n  "#	.text#	addi $v0 $0 4	# syscall 4 (print_str)#	la $a0 break_#	lui $a0, 0x1000#	ori $a0 $a0 0x2e2#	syscall#	break 3	.dataccp_:	.asciiz "Testing move to/from coprocessor control z\n"	.text	addi $v0 $0 4	# syscall 4 (print_str)#	la $a0 ccp_	lui $a0, 0x1000	ori $a0 $a0 0x310	syscall#	li $2 0x7f7f	addi $2 $0 0x7f7f	ctc0 $2 $3	addu $0 $0 $0                #Nop	cfc0 $4 $3	addu $0 $0 $0                #Nop	bne $2 $4 fail#	li $2 0x7f7f#       Skip floating point stuff for now.#	addi $2 $0 0x7f7f#	ctc1 $2 $3#	addu $0 $0 $0                #Nop#	cfc1 $4 $3#	addu $0 $0 $0                #Nop#	bne $2 $4 fail#	li $2 0x7f7f	addi $2 $0 0x7f7f	ctc2 $2 $3	addu $0 $0 $0                #Nop	cfc2 $4 $3	addu $0 $0 $0                #Nop	bne $2 $4 fail#	li $2 0x7f7f	addi $2 $0 0x7f7f	ctc3 $2 $3	addu $0 $0 $0                #Nop	cfc3 $4 $3	addu $0 $0 $0                #Nop	bne $2 $4 fail	addu $0 $0 $0            # Nop	.datamcp_:	.asciiz "Testing move to/from coprocessor z\n"	.text	addi $v0 $0 4	# syscall 4 (print_str)#	la $a0 mcp_	lui $a0, 0x1000	ori $a0 $a0 0x33c	syscall#	li $2 0x7f7f	addi $2 $0 0x7f7f	mtc0 $2 $3	addu $0 $0 $0            # Nop	mfc0 $4 $3	addu $0 $0 $0            # Nop	bne $2 $4 fail#       Skip FP for now.#	li $2 0x7f7f#	addi $2 $0 0x7f7f#	mtc1 $2 $3#	addu $0 $0 $0            # Nop#	mfc1 $4 $f3#	addu $0 $0 $0            # Nop#	bne $2 $4 fail#	li $2 0x7f7f#	addi $2 $0 0x7f7f#	li $3 0xf7f7#	addi $3 $0 0x7f7f#	mtc1.d $2 $4#	mfc1.d $6 $4#	bne $2 $6 fail#	bne $3 $7 fail#	li $2 0x7f7f	addi $2 $0 0x7f7f	mtc2 $2 $3	addu $0 $0 $0            # Nop	mfc2 $4 $3	addu $0 $0 $0            # Nop	bne $2 $4 fail#	li $2 0x7f7f	addi $2 $0 0x7f7f	mtc3 $2 $3	addu $0 $0 $0            # Nop	mfc3 $4 $3	addu $0 $0 $0            # Nop	bne $2 $4 fail	addu $0 $0 $0            # Nop	.datahilo_:	.asciiz "Testing move to/from HI/LO\n"	.text	addi $v0 $0 4	# syscall 4 (print_str)#	la $a0 hilo_	lui $a0, 0x1000	ori $a0 $a0 0x360	syscall	mthi $0	mfhi $2	bne $2 $0 fail	mtlo $0	mflo $2	bne $2 $0 fail#	li $2 1	addi $2 $0 1	mthi $2	mfhi $3	bne $3 $2 fail#	li $2 1	addi $2 $0 1	mtlo $2	mflo $3	bne $3 $2 fail#	li $2 -1	addi $2 $0 -1	mthi $2	mfhi $3	bne $3 $2 fail#	li $2 -1	addi $2 $0 1	mtlo $2	mflo $3	bne $3 $2 fail	addu $0 $0 $0            # Nop	.datalswc_:	.asciiz "Testing load/store word coprocessor z\n"	.align 2lswcd_:	.byte 0, 0, 0, 0	.text	addi $v0 $0 4	# syscall 4 (print_str)#	la $a0 lswc_	lui $a0, 0x1000	ori $a0 $a0 0x37c	syscall#	li $3, 0x7f7f7f7f	lui $3 0x7f7f	ori $3 $3 0x7f7f#	la $2 lswcd_	lui $2, 0x1000	ori $2 $2 0x3a4	mtc0 $3, $0	addu $0 $0 $0           #Nop	swc0 $0 0($2)	lw $4 0($2)	addu $0 $0 $0           #Nop	bne $4 $3 fail	lwc0 $1 0($2)	addu $0 $0 $0           #Nop	mfc0 $5, $1	addu $0 $0 $0           #Nop	bne $5 $3 fail	addu $0 $0 $0           #Nop#	li $3, 0x7f7f7f7f#	lui $3 0x7f7f#	ori $3 $3 0x7f7f#	la $2 lswcd_#	lui $2, 0x1000#	ori $2 $2 0x3a4#	mtc1 $3, $0#	addu $0 $0 $0           #Nop#	swc1 $f0 0($2)#	lw $4 0($2)#	addu $0 $0 $0           #Nop#	bne $4 $3 fail#	lwc1 $f1 0($2)#	addu $0 $0 $0           #Nop#	mfc1 $5, $f1#	addu $0 $0 $0           #Nop#	bne $5 $3 fail#	li $3, 0x7f7f7f7f	lui $3 0x7f7f	ori $3 $3 0x7f7f#	la $2 lswcd_	lui $2, 0x1000	ori $2 $2 0x3a4	mtc2 $3, $0	addu $0 $0 $0           #Nop	swc2 $0 0($2)	lw $4 0($2)	addu $0 $0 $0           #Nop	bne $4 $3 fail	lwc2 $1 0($2)	addu $0 $0 $0           #Nop	mfc2 $5, $1	addu $0 $0 $0           #Nop	bne $5 $3 fail	addu $0 $0 $0           #Nop#	li $3, 0x7f7f7f7f	lui $3 0x7f7f	ori $3 $3 0x7f7f#	la $2 lswcd_	lui $2, 0x1000	ori $2 $2 0x3a4	mtc3 $3, $0	addu $0 $0 $0           #Nop	swc3 $0 0($2)	lw $4 0($2)	addu $0 $0 $0           #Nop	bne $4 $3 fail	addu $0 $0 $0           #Nop	lwc3 $1 0($2)	addu $0 $0 $0           #Nop	mfc3 $5, $1	addu $0 $0 $0           #Nop	bne $5 $3 fail	addu $0 $0 $0           #Nop# Done !!!	.datapt:	.asciiz "Passed all tests\n"	.text	addi $2 $0 4	# syscall 4 (print_str)#	la $a0 sm	lui $a0, 0x1000	ori $a0 $a0 0x3a8	syscall	lui $4 0x1000	lw $31 0($4)	addu $0 $0 $0		# Nop	jr $31		# Return from main#	.data#fm:	.asciiz "Failed test\n"	.textfail:	addi $2 $0 4	# syscall 4 (print_str)#	la $a0 fm	lui $a0, 0x1000	ori $a0 $a0 0x4	syscall	addi $2 $0 10	# syscall 10 (exit)	syscall	addu $0 $0 $0		# Nop	addu $0 $0 $0		# Nop	addu $0 $0 $0		# Nop	addu $0 $0 $0		# Nop# Define the exception handling code.  This must go first!# Duplicate of standard trap handler.	.data	.globl __m1___m1_:	.asciiz "  Exception "	.globl __m2___m2_:	.asciiz " occurred\n"	.ktext 0x80000080	mfc0 $26 $13	# Cause	mfc0 $27 $14	# EPC	addiu $v0, $0, 4	# syscall 4 (print_str)#	la $a0 __m1_	lui $a0, 0x1000	ori $a0 $a0 0x03e5	syscall	addiu $v0, $0, 1	# syscall 1 (print_int)	addu $a0 $0 $26	syscall	addiu $v0, $0, 4	# syscall 4 (print_str)#	la $a0 __m2_	lui $a0, 0x1000	ori $a0, $a0, 0x03f1	syscall	mtc0 $0, $13		# Clear Cause register	rfe			# Return from exception handler	addiu $27 $27 4		# Return to next instruction	jr $27

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -