URL
https://opencores.org/ocsvn/plasma/plasma/trunk
Subversion Repositories plasma
[/] [plasma/] [trunk/] [tools/] [opcodes.asm] - Rev 43
Go to most recent revision | Compare with Previous | Blame | View Log
##################################################################
# TITLE: Opcode Tester
# AUTHOR: Steve Rhoads (rhoadss@yahoo.com)
# DATE CREATED: 1/10/02
# FILENAME: opcodes.asm
# PROJECT: Plasma CPU core
# COPYRIGHT: Software placed into the public domain by the author.
# Software 'as is' without warranty. Author liable for nothing.
# DESCRIPTION:
# This assembly file tests all of the opcodes supported by the
# Plasma core.
# This test assumes that address 0xffff is the UART write register
# Successful tests will print out "A" or "AB" or "ABC" or ....
# Missing letters or letters out of order indicate a failure.
##################################################################
.text
.align 2
.globl entry
.ent entry
entry:
.set noreorder
#These four instructions must be the first instructions
#convert.exe will correctly initialize $gp
lui $gp,0
ori $gp,$gp,0
#convert.exe will set $4=.sbss_start $5=.bss_end
ori $4,$0,0
ori $5,$0,0
mtc0 $0,$12 #disable interrupts
ori $20,$0,0xffff #serial port write address
ori $21,$0,'\n' #<CR> letter
ori $22,$0,'X' #'X' letter
######################################
#Arithmetic Instructions
######################################
ori $2,$0,'A'
sb $2,0($20)
ori $2,$0,'r'
sb $2,0($20)
ori $2,$0,'i'
sb $2,0($20)
ori $2,$0,'t'
sb $2,0($20)
ori $2,$0,'h'
sb $2,0($20)
sb $21,0($20)
#a: ADD
ori $2,$0,'a'
sb $2,0($20)
ori $3,$0,5
ori $4,$0,60
add $2,$3,$4
sb $2,0($20) #A
sb $21,0($20)
#b: ADDI
ori $2,$0,'b'
sb $2,0($20)
ori $4,$0,60
addi $2,$4,5
sb $2,0($20) #A
sb $21,0($20)
#c: ADDIU
ori $2,$0,'c'
sb $2,0($20)
ori $4,$0,50
addiu $5,$4,15
sb $5,0($20) #A
sb $21,0($20)
#d: ADDU
ori $2,$0,'d'
sb $2,0($20)
ori $3,$0,5
ori $4,$0,60
add $2,$3,$4
sb $2,0($20) #A
sb $21,0($20)
#e: DIV
ori $2,$0,'e'
sb $2,0($20)
ori $2,$0,65*117+41
ori $3,$0,117
div $2,$3
nop
mflo $4
sb $4,0($20) #A
mfhi $4
addi $4,$4,66-41
sb $4,0($20) #B
li $2,-67*19
ori $3,$0,19
div $2,$3
nop
mflo $4
sub $4,$0,$4
sb $4,0($20) #C
ori $2,$0,68*23
li $3,-23
div $2,$3
nop
mflo $4
sub $4,$0,$4
sb $4,0($20) #D
li $2,-69*13
li $3,-13
div $2,$3
mflo $4
sb $4,0($20) #E
sb $21,0($20)
#f: DIVU
ori $2,$0,'f'
sb $2,0($20)
ori $2,$0,65*13
ori $3,$0,13
divu $2,$3
nop
mflo $4
sb $4,0($20) #A
sb $21,0($20)
#g: MULT
ori $2,$0,'g'
sb $2,0($20)
ori $2,$0,5
ori $3,$0,13
mult $2,$3
nop
mflo $4
sb $4,0($20) #A
li $2,-5
ori $3,$0,13
mult $2,$3
nop
mflo $4
sub $4,$0,$4
addi $4,$4,1
sb $4,0($20) #B
ori $2,$0,5
li $3,-13
mult $2,$3
nop
mflo $4
sub $4,$0,$4
addi $4,$4,2
sb $4,0($20) #C
li $2,-5
li $3,-13
mult $2,$3
nop
mflo $4
addi $4,$4,3
sb $4,0($20) #D
sb $21,0($20)
#h: MULTU
ori $2,$0,'h'
sb $2,0($20)
ori $2,$0,5
ori $3,$0,13
multu $2,$3
nop
mflo $4
sb $4,0($20) #A
sb $21,0($20)
#i: SLT
ori $2,$0,'i'
sb $2,0($20)
ori $2,$0,10
ori $3,$0,12
slt $4,$2,$3
addi $5,$4,64
sb $5,0($20) #A
slt $4,$3,$2
addi $5,$4,66
sb $5,0($20) #B
li $2,0xfffffff0
slt $4,$2,$3
addi $5,$4,66
sb $5,0($20) #C
slt $4,$3,$2
addi $5,$4,68
sb $5,0($20) #D
li $3,0xffffffff
slt $4,$2,$3
addi $5,$4,68
sb $5,0($20) #E
slt $4,$3,$2
addi $5,$4,70
sb $5,0($20) #F
sb $21,0($20)
#j: SLTI
ori $2,$0,'j'
sb $2,0($20)
ori $2,$0,10
slti $4,$2,12
addi $5,$4,64
sb $5,0($20) #A
slti $4,$2,8
addi $5,$4,66
sb $5,0($20) #B
sb $21,0($20)
#k: SLTIU
ori $2,$0,'k'
sb $2,0($20)
ori $2,$0,10
sltiu $4,$2,12
addi $5,$4,64
sb $5,0($20) #A
sltiu $4,$2,8
addi $5,$4,66
sb $5,0($20) #B
sb $21,0($20)
#l: SLTU
ori $2,$0,'l'
sb $2,0($20)
ori $2,$0,10
ori $3,$0,12
slt $4,$2,$3
addi $5,$4,64
sb $5,0($20) #A
slt $4,$3,$2
addi $5,$4,66
sb $5,0($20) #B
sb $21,0($20)
#m: SUB
ori $2,$0,'m'
sb $2,0($20)
ori $3,$0,70
ori $4,$0,5
sub $2,$3,$4
sb $2,0($20) #A
sb $21,0($20)
#n: SUBU
ori $2,$0,'n'
sb $2,0($20)
ori $3,$0,70
ori $4,$0,5
sub $2,$3,$4
sb $2,0($20) #A
sb $21,0($20)
######################################
#Branch and Jump Instructions
######################################
ori $2,$0,'B'
sb $2,0($20)
ori $2,$0,'r'
sb $2,0($20)
ori $2,$0,'a'
sb $2,0($20)
ori $2,$0,'n'
sb $2,0($20)
ori $2,$0,'c'
sb $2,0($20)
ori $2,$0,'h'
sb $2,0($20)
sb $21,0($20)
#a: B
ori $2,$0,'a'
sb $2,0($20)
ori $10,$0,'A'
ori $11,$0,'B'
b $B1
sb $10,0($20)
sb $22,0($20)
$B1:
sb $11,0($20)
sb $21,0($20)
#b: BAL
ori $2,$0,'b'
sb $2,0($20)
ori $10,$0,'A'
ori $11,$0,'B'
ori $12,$0,'C'
ori $13,$0,'D'
ori $14,$0,'E'
ori $15,$0,'X'
bal $BAL1
sb $10,0($20)
sb $13,0($20)
b $BAL2
sb $14,0($20)
sb $15,0($20)
$BAL1:
sb $11,0($20)
jr $31
sb $12,0($20)
sb $22,0($20)
$BAL2:
sb $21,0($20)
#c: BEQ
ori $2,$0,'c'
sb $2,0($20)
ori $10,$0,'A'
ori $11,$0,'B'
ori $12,$0,'C'
ori $13,$0,'D'
ori $2,$0,100
ori $3,$0,123
ori $4,$0,123
beq $2,$3,$BEQ1
sb $10,0($20)
sb $11,0($20)
beq $3,$4,$BEQ1
sb $12,0($20)
sb $22,0($20)
$BEQ1:
sb $13,0($20)
sb $21,0($20)
#d: BGEZ
ori $2,$0,'d'
sb $2,0($20)
ori $10,$0,'A'
ori $11,$0,'B'
ori $12,$0,'C'
ori $13,$0,'D'
or $15,$0,'X'
ori $2,$0,100
li $3,0xffff1234
ori $4,$0,123
bgez $3,$BGEZ1
sb $10,0($20)
sb $11,0($20)
bgez $2,$BGEZ1
sb $12,0($20)
sb $22,0($20)
$BGEZ1:
bgez $0,$BGEZ2
nop
sb $15,0($20)
$BGEZ2:
sb $13,0($20)
sb $21,0($20)
#e: BGEZAL
ori $2,$0,'e'
sb $2,0($20)
ori $10,$0,'A'
ori $11,$0,'B'
ori $12,$0,'C'
ori $13,$0,'D'
ori $14,$0,'E'
ori $15,$0,'X'
li $3,0xffff1234
bgezal $3,$BGEZAL1
nop
sb $10,0($20)
bgezal $0,$BGEZAL1
nop
sb $13,0($20)
b $BGEZAL2
sb $14,0($20)
sb $15,0($20)
$BGEZAL1:
sb $11,0($20)
jr $31
sb $12,0($20)
sb $22,0($20)
$BGEZAL2:
sb $21,0($20)
#f: BGTZ
ori $2,$0,'f'
sb $2,0($20)
ori $10,$0,'A'
ori $11,$0,'B'
ori $12,$0,'C'
ori $13,$0,'D'
ori $2,$0,100
li $3,0xffff1234
bgtz $3,$BGTZ1
sb $10,0($20)
sb $11,0($20)
bgtz $2,$BGTZ1
sb $12,0($20)
sb $22,0($20)
$BGTZ1:
sb $13,0($20)
sb $21,0($20)
#g: BLEZ
ori $2,$0,'g'
sb $2,0($20)
ori $10,$0,'A'
ori $11,$0,'B'
ori $12,$0,'C'
ori $13,$0,'D'
ori $2,$0,100
li $3,0xffff1234
blez $2,$BLEZ1
sb $10,0($20)
sb $11,0($20)
blez $3,$BLEZ1
sb $12,0($20)
sb $22,0($20)
$BLEZ1:
blez $0,$BLEZ2
nop
sb $22,0($20)
$BLEZ2:
sb $13,0($20)
sb $21,0($20)
#h: BLTZ
ori $2,$0,'h'
sb $2,0($20)
ori $10,$0,'A'
ori $11,$0,'B'
ori $12,$0,'C'
ori $13,$0,'D'
ori $14,$0,'E'
ori $2,$0,100
li $3,0xffff1234
ori $4,$0,0
bltz $2,$BLTZ1
sb $10,0($20)
sb $11,0($20)
bltz $3,$BLTZ1
sb $12,0($20)
sb $22,0($20)
$BLTZ1:
bltz $4,$BLTZ2
nop
sb $13,0($20)
$BLTZ2:
sb $14,0($20)
sb $21,0($20)
#i: BLTZAL
ori $2,$0,'i'
sb $2,0($20)
ori $10,$0,'A'
ori $11,$0,'B'
ori $12,$0,'C'
ori $13,$0,'D'
ori $14,$0,'E'
ori $15,$0,'X'
li $3,0xffff1234
bltzal $0,$BLTZAL1
nop
sb $10,0($20)
bltzal $3,$BLTZAL1
nop
sb $13,0($20)
b $BLTZAL2
sb $14,0($20)
sb $15,0($20)
$BLTZAL1:
sb $11,0($20)
jr $31
sb $12,0($20)
sb $22,0($20)
$BLTZAL2:
sb $21,0($20)
#j: BNE
ori $2,$0,'j'
sb $2,0($20)
ori $10,$0,'A'
ori $11,$0,'B'
ori $12,$0,'C'
ori $13,$0,'D'
ori $2,$0,100
ori $3,$0,123
ori $4,$0,123
bne $3,$4,$BNE1
sb $10,0($20)
sb $11,0($20)
bne $2,$3,$BNE1
sb $12,0($20)
sb $22,0($20)
$BNE1:
sb $13,0($20)
sb $21,0($20)
#k: J
ori $2,$0,'k'
sb $2,0($20)
ori $10,$0,'A'
ori $11,$0,'B'
ori $15,$0,'X'
j $J1
sb $10,0($20)
sb $15,0($20)
$J1:
sb $11,0($20)
sb $21,0($20)
#l: JAL
ori $2,$0,'l'
sb $2,0($20)
ori $10,$0,'A'
ori $11,$0,'B'
ori $12,$0,'C'
ori $13,$0,'D'
ori $14,$0,'E'
ori $15,$0,'X'
jal $JAL1
sb $10,0($20)
sb $13,0($20)
b $JAL2
sb $14,0($20)
sb $15,0($20)
$JAL1:
sb $11,0($20)
jr $31
sb $12,0($20)
sb $22,0($20)
$JAL2:
sb $21,0($20)
#m: JALR
ori $2,$0,'m'
sb $2,0($20)
ori $10,$0,'A'
ori $11,$0,'B'
ori $12,$0,'C'
ori $13,$0,'D'
ori $14,$0,'E'
ori $15,$0,'X'
la $3,$JALR1
jalr $3
sb $10,0($20)
sb $13,0($20)
b $JALR2
sb $14,0($20)
sb $15,0($20)
$JALR1:
sb $11,0($20)
jr $31
sb $12,0($20)
sb $22,0($20)
$JALR2:
sb $21,0($20)
#n: JR
ori $2,$0,'n'
sb $2,0($20)
ori $10,$0,'A'
ori $11,$0,'B'
ori $15,$0,'X'
la $3,$JR1
jr $3
sb $10,0($20)
sb $15,0($20)
$JR1:
sb $11,0($20)
sb $21,0($20)
#o: NOP
ori $2,$0,'o'
sb $2,0($20)
ori $2,$0,65
nop
sb $2,0($20)
sb $21,0($20)
######################################
#Load, Store, and Memory Control Instructions
######################################
ori $2,$0,'L'
sb $2,0($20)
ori $2,$0,'o'
sb $2,0($20)
ori $2,$0,'a'
sb $2,0($20)
ori $2,$0,'d'
sb $2,0($20)
sb $21,0($20)
#a: LB
ori $2,$0,'a'
sb $2,0($20)
ori $2,$0,0xf000
li $3,0x41424344
sw $3,16($2)
lb $4,16($2)
sb $4,0($20)
lb $4,17($2)
sb $4,0($20)
lb $4,18($2)
sb $4,0($20)
lb $2,19($2)
sb $2,0($20)
sb $21,0($20)
#b: LBU
ori $2,$0,'b'
sb $2,0($20)
ori $2,$0,0xf000
li $3,0x41424344
sw $3,16($2)
lb $4,16($2)
sb $4,0($20)
lb $4,17($2)
sb $4,0($20)
lb $4,18($2)
sb $4,0($20)
lb $2,19($2)
sb $2,0($20)
sb $21,0($20)
#c: LH
ori $2,$0,'c'
sb $2,0($20)
ori $2,$0,0xf000
li $3,0x00410042
sw $3,16($2)
lh $4,16($2)
sb $4,0($20)
lh $2,18($2)
sb $2,0($20)
sb $21,0($20)
#d: LHU
ori $2,$0,'d'
sb $2,0($20)
ori $2,$0,0xf000
li $3,0x00410042
sw $3,16($2)
lh $4,16($2)
sb $4,0($20)
lh $2,18($2)
sb $2,0($20)
sb $21,0($20)
#e: LW
ori $2,$0,'e'
sb $2,0($20)
ori $2,$0,0xf000
li $3,'A'
sw $3,16($2)
ori $3,$0,0
lw $2,16($2)
sb $2,0($20)
sb $21,0($20)
#f: LWL & LWR
ori $2,$0,'f'
sb $2,0($20)
ori $2,$0,0xf000
li $3,'A'
sw $3,16($2)
ori $3,$0,0
lwl $2,16($2)
lwr $2,16($2)
sb $2,0($20)
sb $21,0($20)
#g: SB
ori $2,$0,'g'
sb $2,0($20)
ori $2,$0,'A'
sb $2,0($20)
sb $21,0($20)
#h: SH
ori $2,$0,'h'
sb $2,0($20)
ori $4,$0,0xf000
ori $2,$0,0x4142
sh $2,16($4)
lb $3,16($4)
sb $3,0($20)
lb $2,17($4)
sb $2,0($20)
sb $21,0($20)
#i: SW
ori $2,$0,'i'
sb $2,0($20)
ori $2,$0,0xf000
li $3,0x41424344
sw $3,16($2)
lb $4,16($2)
sb $4,0($20)
lb $4,17($2)
sb $4,0($20)
lb $4,18($2)
sb $4,0($20)
lb $2,19($2)
sb $2,0($20)
sb $21,0($20)
#j: SWL & SWR
ori $2,$0,'j'
sb $2,0($20)
ori $2,$0,0xf000
li $3,0x41424344
swl $3,16($2)
swr $3,16($2)
lb $4,16($2)
sb $4,0($20)
lb $4,17($2)
sb $4,0($20)
lb $4,18($2)
sb $4,0($20)
lb $2,19($2)
sb $2,0($20)
sb $21,0($20)
######################################
#Logical Instructions
######################################
ori $2,$0,'L'
sb $2,0($20)
ori $2,$0,'o'
sb $2,0($20)
ori $2,$0,'g'
sb $2,0($20)
ori $2,$0,'i'
sb $2,0($20)
ori $2,$0,'c'
sb $2,0($20)
sb $21,0($20)
#a: AND
ori $2,$0,'a'
sb $2,0($20)
ori $2,$0,0x0741
ori $3,$0,0x60f3
and $4,$2,$3
sb $4,0($20)
sb $21,0($20)
#b: ANDI
ori $2,$0,'b'
sb $2,0($20)
ori $2,$0,0x0741
andi $4,$2,0x60f3
sb $4,0($20)
sb $21,0($20)
#c: LUI
ori $2,$0,'c'
sb $2,0($20)
lui $2,0x41
srl $3,$2,16
sb $3,0($20)
sb $21,0($20)
#d: NOR
ori $2,$0,'d'
sb $2,0($20)
li $2,0xf0fff08e
li $3,0x0f0f0f30
nor $4,$2,$3
sb $4,0($20)
sb $21,0($20)
#e: OR
ori $2,$0,'e'
sb $2,0($20)
ori $2,$0,0x40
ori $3,$0,0x01
or $4,$2,$3
sb $4,0($20)
sb $21,0($20)
#f: ORI
ori $2,$0,'f'
sb $2,0($20)
ori $2,$0,0x40
ori $4,$2,0x01
sb $4,0($20)
sb $21,0($20)
#g: XOR
ori $2,$0,'g'
sb $2,0($20)
ori $2,$0,0xf043
ori $3,$0,0xf002
xor $4,$2,$3
sb $4,0($20)
sb $21,0($20)
#h: XORI
ori $2,$0,'h'
sb $2,0($20)
ori $2,$0,0xf043
xor $4,$2,0xf002
sb $4,0($20)
sb $21,0($20)
######################################
#Move Instructions
######################################
ori $2,$0,'M'
sb $2,0($20)
ori $2,$0,'o'
sb $2,0($20)
ori $2,$0,'v'
sb $2,0($20)
ori $2,$0,'e'
sb $2,0($20)
sb $21,0($20)
#a: MFHI
ori $2,$0,'a'
sb $2,0($20)
ori $2,$0,65
mthi $2
mfhi $3
sb $3,0($20)
sb $21,0($20)
#b: MFLO
ori $2,$0,'b'
sb $2,0($20)
ori $2,$0,65
mtlo $2
mflo $3
sb $3,0($20)
sb $21,0($20)
#c: MTHI
ori $2,$0,'c'
sb $2,0($20)
ori $2,$0,65
mthi $2
mfhi $3
sb $3,0($20)
sb $21,0($20)
#d: MTLO
ori $2,$0,'d'
sb $2,0($20)
ori $2,$0,65
mtlo $2
mflo $3
sb $3,0($20)
sb $21,0($20)
######################################
#Shift Instructions
######################################
ori $2,$0,'S'
sb $2,0($20)
ori $2,$0,'h'
sb $2,0($20)
ori $2,$0,'i'
sb $2,0($20)
ori $2,$0,'f'
sb $2,0($20)
ori $2,$0,'t'
sb $2,0($20)
sb $21,0($20)
#a: SLL
ori $2,$0,'a'
sb $2,0($20)
li $2,0x40414243
sll $3,$2,8
srl $3,$3,24
sb $3,0($20)
sb $21,0($20)
#b: SLLV
ori $2,$0,'b'
sb $2,0($20)
li $2,0x40414243
ori $3,$0,8
sllv $3,$2,$3
srl $3,$3,24
sb $3,0($20)
sb $21,0($20)
#c: SRA
ori $2,$0,'c'
sb $2,0($20)
li $2,0x40414243
sra $3,$2,16
sb $3,0($20)
li $2,0x84000000
sra $3,$2,25
sub $3,$3,0x80
sb $3,0($20)
sb $21,0($20)
#d: SRAV
ori $2,$0,'d'
sb $2,0($20)
li $2,0x40414243
ori $3,$0,16
srav $3,$2,$3
sb $3,0($20)
ori $3,$0,25
li $2,0x84000000
srav $3,$2,$3
sub $3,$3,0x80
sb $3,0($20)
sb $21,0($20)
#e: SRL
ori $2,$0,'e'
sb $2,0($20)
li $2,0x40414243
srl $3,$2,16
sb $3,0($20)
li $2,0x84000000
srl $3,$2,25
sb $3,0($20)
sb $21,0($20)
#f: SRLV
ori $2,$0,'f'
sb $2,0($20)
li $2,0x40414243
ori $3,$0,16
srlv $4,$2,$3
sb $4,0($20)
ori $3,$0,25
li $2,0x84000000
srlv $3,$2,$3
sb $3,0($20)
sb $21,0($20)
ori $2,$0,'D'
sb $2,0($20)
ori $2,$0,'o'
sb $2,0($20)
ori $2,$0,'n'
sb $2,0($20)
ori $2,$0,'e'
sb $2,0($20)
sb $21,0($20)
$DONE:
j $DONE
nop
.set reorder
.end entry
Go to most recent revision | Compare with Previous | Blame | View Log