#This one does all of the basic instrs with
# as simple regs/immediates as possible.
	
__start:
	add $2 $3 $4
	addu $5 $6 $7
	addi $8 $9 0
	addiu $10 $11 0
	
	sub $12 $13 $14
	subu $15 $16 $17
	
	and $18 $19 $20
	andi $21 $22 0
	or $23 $24 $25
	ori $26 $27 0
	
L1:	beq $28 $29 L2
L2:	bne $30 $31 L3
L3:	blez $0 L4
L4:	bgtz $2 L5
L5:	bltz $3 L6
L6:	bgez $4 L7
	
L7:	j L7
	jr $5
L8:	jal L8
	
	lui $6 0
	
	lb $7 0($8)
	lw $9 0($10)
	lbu $11 0($12)
	sb $13 0($14)
	sw $15 0($16)
	
	mfhi $17
	mflo $18
	
	mult $19 $20	
	multu $21 $22
	div $23 $24	
	divu $25 $26				

	sll $27 $28 0
	srl $29 $30 0
	sra $31 $0 0

	slt $2 $3 $4
	sltu $5 $6 $7
	slti $8 $9 0
	sltiu $10 $11 0

	#pseudo-instructions

	move $12 $13
	nop


	move $5 $sp	# freaking spim catches misaligned memory accesses
	
	addi $0 $0 0x0		#0
	addi $0 $0 0xFFFF	#
	addi $0 $0 0x8000	#
	addi $0 $0 0x7FFF
	addi $0 $0 0x1243
	addi $0 $0 0xACBF


	addiu $0 $0 0x0		#0
	addiu $0 $0 0xFFFF	#
	addiu $0 $0 0x8000	#
	addiu $0 $0 0x7FFF
	addiu $0 $0 0x1243
	addiu $0 $0 0xACBF
	
	#subu $15 $16 $17 Same as add
	
	andi $0 $0 0x0		#0
	andi $0 $0 0xFFFF	#
	andi $0 $0 0x8000	#
	andi $0 $0 0x7FFF
	andi $0 $0 0x1243
	andi $0 $0 0xACBF

	#ori $26 $27 0 Same as andi

	
	lb $0 0x0($5)
	lb $0 0xFFFF($5)
	lb $0 0x8000($5)
	lb $0 0x0FFE($5)
	lb $0 0x0234($5)
	lb $0 0xACBF($5)
	
	#lw $9 0($10) same as lb

	lbu $0 0x0($5)
	lbu $0 0xFFFF($5)
	lbu $0 0x8000($5)
	lbu $0 0x0FFF($5)
	lbu $0 0x0234($5)
	lbu $0 0xACBF($5)

	
	#sb $13 0($14) same as lb
	#sw $15 0($16) sams as lb
	

	lui $0 0x0
	lui $0 0xFFFF
	lui $0 0x8000
	lui $0 0x7FFF
	lui $0 0x1234
	lui $0 0xACBF
	

	sll $0 $0 0
	sll $0 $0 1
	sll $0 $0 31
	sll $0 $0 12
	sll $0 $0 17


	slti $0 $0 0x0		#0
	slti $0 $0 0xFFFF	#
	slti $0 $0 0x8000	#
	slti $0 $0 0x7FFF
	slti $0 $0 0x1243
	slti $0 $0 0xACBF


	sltiu $0 $0 0x0		#0
	sltiu $0 $0 0xFFFF	#
	sltiu $0 $0 0x8000	#
	sltiu $0 $0 0x7FFF
	sltiu $0 $0 0x1243
	sltiu $0 $0 0xACBF

	beq $0 $0 L11
	bne $0 $0 L12
	blez $0 L13
	bgtz $0 L14
	bltz $0 L15
	bgez $0 L16


	
	beq $0 $0 L11
L11:	bne $0 $0 L12
L12:	blez $0 L13
L13:	bgtz $0 L14
L14:	bltz $0 L15
L15:	bgez $0 L16
L16:	
		
	beq $0 $0 L11
	bne $0 $0 L12
	blez $0 L13
	bgtz $0 L14
	bltz $0 L15
	bgez $0 L16

	
	j L17
L17:	j L17
	j L17

	done
	


