Files
vhdl/lib/CPUs/MIPS/sim/asm/rmd160_test.s
T
jens cd2640e9c6 Initial revision
Committed on the Free edition of March Hare Software CVSNT Server.
Upgrade to CVS Suite for more features and support:
http://march-hare.com/cvsnt/


git-svn-id: http://moon:8086/svn/vhdl/trunk@986 cc03376c-175c-47c8-b038-4cd826a8556b
2013-07-24 18:13:16 +00:00

557 lines
7.6 KiB
ArmAsm

.file 1 "rmd160_test.c"
.set nobopt
.text
.align 2
.globl saus
.ent saus
saus:
.frame $sp,0,$31 # vars= 0, regs= 0/0, args= 0, gp= 0
.mask 0x00000000,0
.fmask 0x00000000,0
li $2,-2147483648 # 0xffffffff80000000
sll $4,$4,24
sra $4,$4,24
ori $5,$2,0x4
ori $3,$2,0x8
$L2:
lbu $2,0($3)
andi $2,$2,0x2
bne $2,$0,$L2
sb $4,0($5)
j $31
.end saus
.align 2
.globl sputs
.ent sputs
sputs:
.frame $sp,32,$31 # vars= 0, regs= 3/0, args= 16, gp= 0
.mask 0x80030000,-8
.fmask 0x00000000,0
addiu $sp,$sp,-32
sw $17,20($sp)
sw $16,16($sp)
sw $31,24($sp)
move $16,$4
lb $4,0($4)
.set noreorder
.set nomacro
j $L11
move $17,$16
.set macro
.set reorder
$L12:
.set noreorder
.set nomacro
jal saus
addiu $16,$16,1
.set macro
.set reorder
lb $4,0($16)
$L11:
.set noreorder
.set nomacro
bne $4,$0,$L12
subu $2,$16,$17
.set macro
.set reorder
lw $31,24($sp)
lw $17,20($sp)
lw $16,16($sp)
.set noreorder
.set nomacro
j $31
addiu $sp,$sp,32
.set macro
.set reorder
.end sputs
.align 2
.globl print_byte
.ent print_byte
print_byte:
.frame $sp,32,$31 # vars= 0, regs= 3/0, args= 16, gp= 0
.mask 0x80030000,-8
.fmask 0x00000000,0
addiu $sp,$sp,-32
sw $16,16($sp)
sll $16,$4,24
sw $17,20($sp)
sw $31,24($sp)
sra $16,$16,24
li $17,1 # 0x1
sra $2,$16,4
$L22:
andi $5,$2,0xf
sll $2,$16,4
sll $16,$2,24
sltu $3,$5,10
addiu $17,$17,-1
sra $16,$16,24
.set noreorder
.set nomacro
bne $3,$0,$L18
addiu $4,$5,48
.set macro
.set reorder
addiu $4,$5,55
$L18:
jal saus
.set noreorder
.set nomacro
bgez $17,$L22
sra $2,$16,4
.set macro
.set reorder
lw $31,24($sp)
lw $17,20($sp)
lw $16,16($sp)
.set noreorder
.set nomacro
j $31
addiu $sp,$sp,32
.set macro
.set reorder
.end print_byte
.align 2
.globl print_word
.ent print_word
print_word:
.frame $sp,32,$31 # vars= 0, regs= 3/0, args= 16, gp= 0
.mask 0x80030000,-8
.fmask 0x00000000,0
addiu $sp,$sp,-32
sw $17,20($sp)
sw $16,16($sp)
sw $31,24($sp)
move $16,$4
li $17,3 # 0x3
$L27:
sra $4,$16,24
.set noreorder
.set nomacro
jal print_byte
addiu $17,$17,-1
.set macro
.set reorder
.set noreorder
.set nomacro
bgez $17,$L27
sll $16,$16,8
.set macro
.set reorder
lw $31,24($sp)
lw $17,20($sp)
lw $16,16($sp)
.set noreorder
.set nomacro
j $31
addiu $sp,$sp,32
.set macro
.set reorder
.end print_word
.lcomm hashcode.0,20
.align 2
.globl RMD
.ent RMD
RMD:
.frame $sp,128,$31 # vars= 88, regs= 6/0, args= 16, gp= 0
.mask 0x801f0000,-4
.fmask 0x00000000,0
addiu $sp,$sp,-128
sw $16,104($sp)
move $16,$4
addiu $4,$sp,16
sw $31,124($sp)
sw $20,120($sp)
sw $18,112($sp)
sw $17,108($sp)
.set noreorder
.set nomacro
jal MDinit
sw $19,116($sp)
.set macro
.set reorder
.set noreorder
.set nomacro
jal strlen
move $4,$16
.set macro
.set reorder
move $18,$2
sltu $2,$2,64
move $17,$18
.set noreorder
.set nomacro
bne $2,$0,$L44
addiu $20,$sp,16
.set macro
.set reorder
addiu $19,$sp,40
addiu $5,$20,24
$L50:
li $11,15 # 0xf
$L37:
lbu $2,3($16)
lbu $3,2($16)
lbu $4,1($16)
sll $3,$3,16
sll $2,$2,24
or $2,$2,$3
sll $4,$4,8
lbu $3,0($16)
or $2,$2,$4
or $2,$2,$3
addiu $11,$11,-1
sw $2,0($5)
addiu $16,$16,4
.set noreorder
.set nomacro
bgez $11,$L37
addiu $5,$5,4
.set macro
.set reorder
addiu $17,$17,-64
addiu $4,$sp,16
.set noreorder
.set nomacro
jal compress
move $5,$19
.set macro
.set reorder
sltu $2,$17,64
.set noreorder
.set nomacro
beq $2,$0,$L50
addiu $5,$20,24
.set macro
.set reorder
$L44:
move $5,$16
move $6,$18
addiu $4,$sp,16
.set noreorder
.set nomacro
jal MDfinish
move $7,$0
.set macro
.set reorder
move $11,$0
la $15,hashcode.0
la $13,hashcode.0+1
la $14,hashcode.0+2
la $12,hashcode.0+3
$L42:
srl $2,$11,2
sll $2,$2,2
addu $2,$2,$20
lw $3,0($2)
addu $7,$11,$15
addu $8,$11,$13
addu $9,$11,$14
addu $10,$11,$12
addiu $11,$11,4
srl $6,$3,24
srl $2,$3,8
srl $4,$3,16
sltu $5,$11,20
sb $3,0($7)
sb $2,0($8)
sb $4,0($9)
.set noreorder
.set nomacro
bne $5,$0,$L42
sb $6,0($10)
.set macro
.set reorder
lw $31,124($sp)
lw $20,120($sp)
lw $19,116($sp)
lw $18,112($sp)
lw $17,108($sp)
lw $16,104($sp)
la $2,hashcode.0
.set noreorder
.set nomacro
j $31
addiu $sp,$sp,128
.set macro
.set reorder
.end RMD
.section .rodata.str1.4,"aMS",@progbits,1
.align 2
$LC0:
.ascii "\r\n\000"
.align 2
$LC1:
.ascii "* message: \000"
.align 2
$LC2:
.ascii " hashcode: \000"
.text
.align 2
.globl RMDstring
.ent RMDstring
RMDstring:
.frame $sp,40,$31 # vars= 8, regs= 3/0, args= 16, gp= 0
.mask 0x80030000,-8
.fmask 0x00000000,0
lbu $3,$LC0+2
lhu $2,$LC0
addiu $sp,$sp,-40
sw $31,32($sp)
sb $3,18($sp)
sw $17,28($sp)
sw $16,24($sp)
sh $2,16($sp)
.set noreorder
.set nomacro
jal RMD
move $16,$5
.set macro
.set reorder
addiu $4,$sp,16
.set noreorder
.set nomacro
jal sputs
move $17,$2
.set macro
.set reorder
la $4,$LC1
jal sputs
.set noreorder
.set nomacro
jal sputs
move $4,$16
.set macro
.set reorder
.set noreorder
.set nomacro
jal sputs
addiu $4,$sp,16
.set macro
.set reorder
la $4,$LC2
.set noreorder
.set nomacro
jal sputs
move $16,$0
.set macro
.set reorder
addu $2,$17,$16
$L58:
lb $4,0($2)
.set noreorder
.set nomacro
jal print_byte
addiu $16,$16,1
.set macro
.set reorder
sltu $2,$16,20
.set noreorder
.set nomacro
bne $2,$0,$L58
addu $2,$17,$16
.set macro
.set reorder
.set noreorder
.set nomacro
jal sputs
addiu $4,$sp,16
.set macro
.set reorder
lw $31,32($sp)
lw $17,28($sp)
lw $16,24($sp)
.set noreorder
.set nomacro
j $31
addiu $sp,$sp,40
.set macro
.set reorder
.end RMDstring
.rdata
.align 2
$LC3:
.byte -1
.byte 35
.byte -100
.byte -42
.byte 89
.byte -118
.byte 121
.byte 46
.byte -89
.byte -85
.byte 108
.byte -8
.byte 117
.byte -74
.byte 53
.byte 94
.byte 93
.byte -128
.byte 106
.byte 54
.section .rodata.str1.4
.align 2
$LC4:
.ascii "MIPS R3000 CPU\000"
.align 2
$LC5:
.ascii "Failed\r\n\000"
.text
.align 2
.globl main
.ent main
main:
.frame $sp,88,$31 # vars= 48, regs= 5/0, args= 16, gp= 0
.mask 0x800f0000,-8
.fmask 0x00000000,0
lwl $2,$LC3+3
lwl $3,$LC3+7
lwr $2,$LC3
lwr $3,$LC3+4
lwl $4,$LC3+11
lwl $5,$LC3+15
lwl $6,$LC3+19
addiu $sp,$sp,-88
lwr $4,$LC3+8
lwr $5,$LC3+12
lwr $6,$LC3+16
sw $2,16($sp)
sw $3,20($sp)
lw $2,$LC4
lw $3,$LC4+4
sw $19,76($sp)
sw $18,72($sp)
sw $17,68($sp)
sw $4,24($sp)
sw $5,28($sp)
sw $2,40($sp)
sw $31,80($sp)
sw $16,64($sp)
sw $6,32($sp)
sw $3,44($sp)
lw $2,$LC4+8
lhu $3,$LC4+12
sw $2,48($sp)
lbu $2,$LC4+14
sh $3,52($sp)
sb $2,54($sp)
lbu $3,$LC0+2
lhu $2,$LC0
li $4,-2147483648 # 0xffffffff80000000
sh $2,56($sp)
sb $3,58($sp)
ori $5,$4,0x9
li $2,53
ori $4,$4,0x8
li $3,85
sb $2,0($5)
move $18,$0
sb $3,0($4)
addiu $19,$sp,56
addiu $17,$sp,40
$L60:
.set noreorder
.set nomacro
jal print_word
move $4,$18
.set macro
.set reorder
.set noreorder
.set nomacro
jal sputs
move $4,$19
.set macro
.set reorder
addiu $18,$18,1
.set noreorder
.set nomacro
j $L66
li $16,32249 # 0x7df9
.set macro
.set reorder
$L64:
.set noreorder
.set nomacro
bltz $16,$L70
move $4,$17
.set macro
.set reorder
$L66:
.set noreorder
.set nomacro
jal RMD
move $4,$17
.set macro
.set reorder
move $4,$2
addiu $5,$sp,16
.set noreorder
.set nomacro
jal memcmp
li $6,20 # 0x14
.set macro
.set reorder
la $4,$LC5
.set noreorder
.set nomacro
beq $2,$0,$L64
addiu $16,$16,-1
.set macro
.set reorder
jal sputs
.set noreorder
.set nomacro
bgez $16,$L66
move $4,$17
.set macro
.set reorder
$L70:
.set noreorder
.set nomacro
jal RMDstring
move $5,$17
.set macro
.set reorder
j $L60
.end main