📄 opcodes.asm
字号:
################################################################### 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 0x20000000 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 entryentry: .set noreorder la $gp, _gp #initialize stack pointer la $4, __bss_start #$4 = .sbss_start la $5, _end #$5 = .bss_end nop #no stack needed nop b StartTest nop #nops required to place ISR at 0x3c nopOS_AsmPatchValue: #Code to place at address 0x3c lui $26, 0x1000 ori $26, $26, 0x3c jr $26 nopInterruptVector: #Address=0x3c mfc0 $26,$14 #C0_EPC=14 (Exception PC) jr $26 add $4,$4,5 StartTest: mtc0 $0,$12 #disable interrupts lui $20,0x2000 #serial port write address ori $21,$0,'\n' #<CR> letter ori $22,$0,'X' #'X' letter ori $23,$0,'\r' ori $24,$0,0x0f80 #temp memory sb $23,0($20) sb $21,0($20) sb $23,0($20) sb $21,0($20) sb $23,0($20) sb $21,0($20) sb $23,0($20) sb $21,0($20) #Patch interrupt vector to 0x1000003c la $5, OS_AsmPatchValue sub $6,$5,0x1000 blez $6,NoPatch lw $6, 0($5) sw $6, 0x3c($0) lw $6, 4($5) sw $6, 0x40($0) lw $6, 8($5) sw $6, 0x44($0) lw $6, 12($5) sw $6, 0x48($0)NoPatch: ###################################### #Arithmetic Instructions ######################################ArthmeticTest: 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 $23,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 $23,0($20) 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 $23,0($20) 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 $23,0($20) 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 $23,0($20) 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 $23,0($20) 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 $23,0($20) 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 mfhi $5 mflo $4 sub $4,$0,$4 addu $4,$4,$5 addi $4,$4,2 sb $4,0($20) #B ori $2,$0,5 li $3,-13 mult $2,$3 mfhi $5 mflo $4 sub $4,$0,$4 addu $4,$4,$5 addi $4,$4,3 sb $4,0($20) #C li $2,-5 li $3,-13 mult $2,$3 mfhi $5 mflo $4 addu $4,$4,$5 addi $4,$4,3 sb $4,0($20) #D lui $4,0xfe98 ori $4,$4,0x62e5 lui $5,0x6 ori $5,0x8db8 mult $4,$5 mfhi $6 addiu $7,$6,2356+1+'E' #E sb $7,0($20) sb $23,0($20) 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 $23,0($20) 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 $23,0($20) 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 $23,0($20) 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 $23,0($20) 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 $23,0($20) 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 $23,0($20) 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 $23,0($20) sb $21,0($20) ###################################### #Branch and Jump Instructions ######################################BranchTest: 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 $23,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 $23,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 $23,0($20) 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 $23,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 $23,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 $23,0($20) 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 $23,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 $23,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 $23,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 $23,0($20) sb $21,0($20) #j: BNE ori $2,$0,'j' sb $2,0($20)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -