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

📄 tt.fpu.bare.s

📁 用汇编语言编程源代码
💻 S
📖 第 1 页 / 共 4 页
字号:
# SPIM S20 MIPS simulator.# A torture test for the FPU instructions in the bare SPIM simulator.# Copyright (C) 1990-2000 by James Larus, larus@cs.wisc.edu.# ALL RIGHTS RESERVED.## SPIM is distributed under the following conditions:## You may make copies of SPIM for your own use and modify those copies.## All copies of SPIM must retain my name and copyright notice.## You may not sell SPIM or distributed SPIM in conjunction with a commerical# product or service without the expressed written consent of James Larus.## THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR# IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR# PURPOSE.## $Header: /u/faculty/larus/Software/larus/SPIM/Tests/RCS/tt.fpu.bare.s,v 1.3 1994/01/18 03:23:44 larus Exp $# Adapted by Anne Rogers <amr@blueline.Princeton.EDU> from tt.le.s.# Run -bare -notrap.# Test floating point instructions.  Warning: This code is not relocatable.  # New data statements should be added after "Testing C.UN.S\n".	.datasaved_ret_pc:	.word 0		# Holds PC to return from mainsm:      .asciiz "Failed  "   pt:      .asciiz "Passed all tests\n"	.text# Standard startup code.  Invoke the routine main with no arguments.	.globl __start__start: jal main	addu $0 $0 $0		# Nop	addiu $2 $0 10	syscall			# syscall 10 (exit)	addu $0 $0 $0		# Nop	addu $0 $0 $0		# Nop	addu $0 $0 $0		# Nop	addu $0 $0 $0		# Nop	.globl mainmain:	lui $4 0x1000	sw $31 0($4)	.dataabs.s_:.asciiz "Testing ABS.S\n"fp_s100:.float 100.0fp_sm100:.float -100.0	.text	addi $v0 $0 4	# syscall 4 (print_str)#	la $a0 abs.s_	lui $a0, 0x1000	ori $a0 $a0 0x1f	syscall        lui $2 0x1000	ori $2 $2 0x30	lwc1 $f0 0($2)	addu $0 $0 $0	lw $4 0($2)	addu $0 $0 $0	mfc1 $5 $f0	addu $0 $0 $0	bne $5 $4 fail	addu $0 $0 $0	abs.s $f2 $f0	mfc1 $5 $f2	addu $0 $0 $0              #Nop	bne $4 $5 fail	lwc1 $f0 4($2)	abs.s $f2 $f0	mfc1 $5 $f2	addu $0 $0 $0              #Nop	bne $4 $5 fail	addu $0 $0 $0              #Nop	.dataabs.d_:.asciiz "Testing ABS.D\n"fp_d100:.double 100.0fp_dm100:.double -100.0	.text	addi $v0 $0 4	# syscall 4 (print_str)#	la $a0 abs.d_	lui $a0, 0x1000	ori $a0 $a0 0x38	syscall	#	la $2 fp_d100	lui $2, 0x1000	ori $2 $2 0x48	lw $4 0($2)	lw $5 4($2)	lwc1 $f0 0($2)	lwc1 $f1 4($2)	addu $0 $0 $0              #Nop	abs.d $f2 $f0	mfc1 $6 $f2	mfc1 $7 $f3	addu $0 $0 $0              #Nop	bne $4 $6 fail	addu $0 $0 $0              #Nop	bne $5 $7 fail	lwc1 $f0 8($2)	lwc1 $f1 12($2)	addu $0 $0 $0              #Nop	abs.d $f2 $f0	mfc1 $6 $f2	mfc1 $7 $f3	addu $0 $0 $0              #Nop	bne $4 $6 fail	addu $0 $0 $0              #Nop	bne $5 $7 fail	.dataadd.s_:	.asciiz "Testing ADD.S\n"fp_s0:	.float 0.0fp_s1:	.float 1.0fp_sm1:	.float -1.0	.text	addi $v0 $0 4	# syscall 4 (print_str)#	la $a0 add.s_	lui $a0 0x1000	ori $a0 $a0 0x58	syscall	lui $2, 0x1000	ori $2 $2 0x68	lw $4 0($2)	lwc1 $f0 0($2)	addu $0 $0 $0                  # Nop	add.s $f2 $f0 $f0	mfc1 $6 $f2	addu $0 $0 $0                  # Nop	bne $4 $6 fail	addu $0 $0 $0                  # Nop	lw $4 4($2)	lwc1 $f0 0($2)	lwc1 $f2 4($2)	addu $0 $0 $0                  # Nop	add.s $f4 $f0 $f2	mfc1 $6 $f4	addu $0 $0 $0                  # Nop	bne $4 $6 fail	lw $4 0($2)	lwc1 $f0 4($2)	lwc1 $f2 8($2)	addu $0 $0 $0                  # Nop	add.s $f4 $f0 $f2	mfc1 $6 $f4	addu $0 $0 $0                  # Nop	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	addi $v0 $0 4	# syscall 4 (print_str)#	la $a0 add.d_	lui $a0 0x1000	ori $a0 $a0 0x74	syscall	lui $1 0x1000	ori $1 $1 0x88	lw $4 0($1)	lw $5 4($1)	lwc1 $f0 0($1)	lwc1 $f1 4($1)	addu $0 $0 $0              # Nop	add.d $f2 $f0 $f0	mfc1 $6 $f2	mfc1 $7 $f3	addu $0 $0 $0              # Nop	bne $4 $6 fail	addu $0 $0 $0              # Nop	bne $5 $7 fail	lw $4 8($1)	lw $5 12($1)	lwc1 $f0 0($1)	lwc1 $f1 4($1)	lwc1 $f2 8($1)	lwc1 $f3 12($1)	addu $0 $0 $0              # Nop	add.d $f4 $f0 $f2	mfc1 $6 $f4	mfc1 $7 $f5	addu $0 $0 $0              # Nop	bne $4 $6 fail	addu $0 $0 $0              # Nop	bne $5 $7 fail	lw $4 0($1)	lw $5 4($1)	lwc1 $f0 8($1)	lwc1 $f1 12($1)	lwc1 $f2 16($1)	lwc1 $f3 20($1)	addu $0 $0 $0              # Nop	add.d $f4 $f0 $f2	mfc1 $6 $f4	mfc1 $7 $f5	addu $0 $0 $0              # Nop	bne $4 $6 fail	addu $0 $0 $0              # Nop	bne $5 $7 fail	addu $0 $0 $0              # Nop	.datacvt.d.s_:	.asciiz "Testing CVT.D.S\n"	.text	addi $v0 $0 4	# syscall 4 (print_str)#	la $a0 cvt.d.s_	lui $a0 0x1000	ori $a0 $a0 0xa0	syscall		lui $1 0x1000	ori $1 $1 0x88	lw $4 0($1)                                #fp_d0	lw $5 4($1)                                #fp_d0+4	lui $2, 0x1000	ori $2 $2 0x68	lwc1 $f0 0($2)                             #fp_s0	addu $0 $0 $0                              # Nop	cvt.d.s $f2 $f0	mfc1 $6 $f2	mfc1 $7 $f3	addu $0 $0 $0                              # Nop	bne $4 $6 fail	addu $0 $0 $0                              # Nop	bne $5 $7 fail	addu $0 $0 $0                              # Nop	lw $4 8($1)                                # fp_d1	lw $5 12($1)                               # fp_d1+4	lwc1 $f0 4($2)                             # fp_s1	addu $0 $0 $0                              # Nop	cvt.d.s $f2 $f0	mfc1 $6 $f2	mfc1 $7 $f3	addu $0 $0 $0                              # Nop	bne $4 $6 fail	addu $0 $0 $0                              # Nop	bne $5 $7 fail	addu $0 $0 $0                              # Nop	lw $4 16($1)                               # fp_dm1	lw $5 20($1)                               # fp_dm1+4	lwc1 $f0 8($2)                             # fp_sm1	addu $0 $0 $0                              # Nop	cvt.d.s $f2 $f0	mfc1 $6 $f2	mfc1 $7 $f3	addu $0 $0 $0                              # Nop	bne $4 $6 fail	addu $0 $0 $0                              # Nop	bne $5 $7 fail	addu $0 $0 $0                              # Nop	.datacvt.d.w_:	.asciiz "Testing CVT.D.W\n"	.text	addi $v0 $0 4	             # syscall 4 (print_str)#	la $a0 cvt.d.w_	lui $a0 0x1000	ori $a0 $a0 0xb1	syscall	lui $1 0x1000	ori $1 $1 0x88	lw $4 0($1)                       # fp_d0	lw $5 4($1)                       # fp_d0+4	mtc1 $0 $0	addu $0 $0 $0                     # Nop	cvt.d.w $f2 $f0	mfc1 $6 $f2	mfc1 $7 $f3	addu $0 $0 $0                     # Nop	bne $4 $6 fail	addu $0 $0 $0                     # Nop	bne $5 $7 fail	addu $0 $0 $0                     # Nop	lw $4 8($1)                       # fp_d1	lw $5 12 ($1)                     # fp_d1+4	addi $9 $0 1	mtc1 $9 $0	addu $0 $0 $0                     # Nop	cvt.d.w $f2 $f0	mfc1 $6 $f2	mfc1 $7 $f3	addu $0 $0 $0                     # Nop	bne $4 $6 fail	addu $0 $0 $0                     # Nop	bne $5 $7 fail	addu $0 $0 $0                     # Nop	lw $4 16($1)                      # fp_dm1	lw $5 20($1)                      # fp_dm1+4	addi $9 $0 -1	mtc1 $9 $0	addu $0 $0 $0                     # Nop	cvt.d.w $f2 $f0	mfc1 $6 $f2	mfc1 $7 $f3	bne $4 $6 fail	addu $0 $0 $0                     # Nop	bne $5 $7 fail	addu $0 $0 $0                     # Nop	.datacvt.s.d_:	.asciiz "Testing CVT.S.D\n"	.text	addi $v0 $0 4	# syscall 4 (print_str)#	la $a0 cvt.s.d_	lui $a0 0x1000	ori $a0 $a0 0xc2	syscall	lui $1 0x1000	ori $1 $1 0x68	lw $4 0($1)                           # fp_s0	lui $2 0x1000	ori $2 $2 0x88	lwc1 $f0 0($2)                        # fp_d0	lwc1 $f1 4($2)                        # fp_d0+4	addu $0 $0 $0              #Nop	cvt.s.d $f2 $f0	mfc1 $6 $f2	addu $0 $0 $0          	bne $4 $6 fail	addu $0 $0 $0          	lw $4 4($1)                           # fp_s1	lwc1 $f0 8($2)                        # fp_d1	lwc1 $f1 12($2)                       # fp_d1+4	addu $0 $0 $0              #Nop	cvt.s.d $f2 $f0	addu $0 $0 $0          	mfc1 $6 $f2	addu $0 $0 $0          	bne $4 $6 fail	addu $0 $0 $0          	lw $4 8($1)                           # fp_sm1	lwc1 $f0 16($2)                       # fp_dm1	lwc1 $f1 20 ($2)                      # fp_dm1+4	addu $0 $0 $0              #Nop	cvt.s.d $f2 $f0	mfc1 $6 $f2	addu $0 $0 $0	bne $4 $6 fail	addu $0 $0 $0	.datacvt.s.w_:	.asciiz "Testing CVT.S.W\n"	.text	addi $v0 $0 4	# syscall 4 (print_str)#	la $a0 cvt.s.w_	lui $a0 0x1000	ori $a0 $a0 0xd3	syscall	lui $1 0x1000	ori $1 $1 0x68	lw $4 0($1)                        # fp_s0	mtc1 $0 $0	cvt.s.w $f2 $f0	mfc1 $6 $f2	addu $0 $0 $0	bne $4 $6 fail	addu $0 $0 $0	lw $4 4($1)                        # fp_s1	addi $9 $0 1	mtc1 $9 $0	cvt.s.w $f2 $f0	mfc1 $6 $f2	addu $0 $0 $0	bne $4 $6 fail	addu $0 $0 $0	lw $4 8($1)                         # fp_sm1	addi $9 $0 -1	mtc1 $9 $0	cvt.s.w $f2 $f0	mfc1 $6 $f2	addu $0 $0 $0	bne $4 $6 fail	addu $0 $0 $0	.datacvt.w.d_:	.asciiz "Testing CVT.W.D\n"	.text	addi $v0 $0 4	# syscall 4 (print_str)#	la $a0 cvt.w.d_	lui $a0 0x1000	ori $a0 $a0 0xe4	syscall	lui $1 0x1000	ori $1 $1 0x88	lwc1 $f0 0($1)                            # fp_d0	lwc1 $f1 4($1)                            # fp_d0+4	addu $0 $0 $0                             # Nop	cvt.w.d $f2 $f0	mfc1 $6 $f2	addu $0 $0 $0                             # Nop	bne $0 $6 fail	addu $0 $0 $0                             # Nop	lwc1 $f0 8($1)                            # fp_d1	lwc1 $f1 12($1)                           # fp_d1+4	addu $0 $0 $0                             # Nop	cvt.w.d $f2 $f0	mfc1 $6 $f2	addi $4 $0 1	addu $0 $0 $0                             # Nop	bne $4 $6 fail	addu $0 $0 $0                             # Nop	lwc1 $f0 16($1)                           # fp_dm1	lwc1 $f1 20($1)                           # fp_dm1+4	addu $0 $0 $0              #Nop	cvt.w.d $f2 $f0	mfc1 $6 $f2	addi $4 $0 -1	bne $4 $6 fail	addu $0 $0 $0                             # Nop	.datacvt.w.s_:	.asciiz "Testing CVT.W.S\n"	.text#	addi $v0 $0 4	# syscall 4 (print_str)#	la $a0 cvt.w.s_	lui $a0 0x1000	ori $a0 $a0 0xf5	syscall	lui $1 0x1000	ori $1 $1 0x68	lwc1 $f0 0($1)                             # fp_s0	addu $0 $0 $0              #Nop	cvt.w.s $f2 $f0	mfc1 $6 $f2	addu $0 $0 $0                              # Nop	bne $0 $6 fail	addu $0 $0 $0                              # Nop	lwc1 $f0 4($1)                             # fp_s1	addu $0 $0 $0              #Nop	cvt.w.s $f2 $f0	mfc1 $6 $f2	addi $4 $0 1	bne $4 $6 fail	addu $0 $0 $0                              # Nop	lwc1 $f0 8($1)                             # fp_sm1	addu $0 $0 $0              #Nop	cvt.w.s $f2 $f0	mfc1 $6 $f2	addi $4 $0 -1	bne $4 $6 fail	addu $0 $0 $0                              # Nop	.datadiv.s_:	.asciiz "Testing DIV.S\n"fp_s2:	.float 2.0fp_s3:	.float 3.0fp_s1p5:.float 1.5	.text	addi $v0 $0 4	# syscall 4 (print_str)#	la $a0 div.s_	lui $a0 0x1000	ori $a0 $a0 0x106	syscall	lui $1 0x1000	ori $1 $1 0x68	lw $4 4($1)                              # fp_s1	lwc1 $f0 4($1)                           # fp_s1	addu $0 $0 $0              #Nop	div.s $f2 $f0 $f0	mfc1 $6 $f2	addu $0 $0 $0                            # Nop	bne $4 $6 fail	addu $0 $0 $0                            # Nop	lui $2 0x1000	ori $2 $2 0x118	lw $4 8($2)                                    # fp_s1p5	lwc1 $f0 4($2)                                 # fp_s3	lwc1 $f2 0($2)                                 # fp_s2	addu $0 $0 $0              #Nop	div.s $f4 $f0 $f2	mfc1 $6 $f4	addu $0 $0 $0                            # Nop	bne $4 $6 fail	addu $0 $0 $0                            # Nop	.datadiv.d_:	.asciiz "Testing DIV.D\n"# EOS = 132...align to 138fp_d2:	.double 2.0fp_d3:	.double 3.0fp_d1p5:.double 1.5	.text	addi $v0 $0 4	# syscall 4 (print_str)#	la $a0 div.d_	lui $a0 0x1000	ori $a0 $a0 0x124	syscall	lui $1 0x1000	ori $1 $1 0x90	lw $4 0($1)                             # fp_d1	lw $5 4($1)                             # fp_d1+4	lwc1 $f0 0($1)                          # fp_d1	lwc1 $f1 4($1)                          # fp_d1+4	addu $0 $0 $0              #Nop	div.d $f2 $f0 $f0	mfc1 $6 $f2	mfc1 $7 $f3	addu $0 $0 $0                            # Nop	bne $4 $6 fail	addu $0 $0 $0                            # Nop	bne $5 $7 fail	addu $0 $0 $0                            # Nop	lui $2 0x1000	ori $2 $2 0x138                          # Nop	lw $4 16($2)                              # fp_d1p5         	lw $5 20($2)                              # fp_d1p5+4	lwc1 $f0 8($2)                          # fp_d3	lwc1 $f1 12($2)                          # fp_d3+4

⌨️ 快捷键说明

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