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
185 lines
2.7 KiB
ArmAsm
185 lines
2.7 KiB
ArmAsm
.file 1 "utils.c"
|
|
.set nobopt
|
|
.text
|
|
.align 2
|
|
.globl sein
|
|
.ent sein
|
|
sein:
|
|
.frame $sp,0,$31 # vars= 0, regs= 0/0, args= 0, gp= 0
|
|
.mask 0x00000000,0
|
|
.fmask 0x00000000,0
|
|
li $2,-2147483648 # 0xffffffff80000000
|
|
ori $4,$2,0x4
|
|
ori $3,$2,0x8
|
|
$L2:
|
|
lbu $2,0($3)
|
|
andi $2,$2,0x10
|
|
beq $2,$0,$L2
|
|
lbu $2,0($4)
|
|
sll $2,$2,24
|
|
.set noreorder
|
|
.set nomacro
|
|
j $31
|
|
sra $2,$2,24
|
|
.set macro
|
|
.set reorder
|
|
|
|
.end sein
|
|
.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
|
|
$L6:
|
|
lbu $2,0($3)
|
|
andi $2,$2,0x2
|
|
bne $2,$0,$L6
|
|
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 $L14
|
|
move $17,$16
|
|
.set macro
|
|
.set reorder
|
|
|
|
$L15:
|
|
.set noreorder
|
|
.set nomacro
|
|
jal saus
|
|
addiu $16,$16,1
|
|
.set macro
|
|
.set reorder
|
|
|
|
lb $4,0($16)
|
|
$L14:
|
|
.set noreorder
|
|
.set nomacro
|
|
bne $4,$0,$L15
|
|
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
|
|
$L25:
|
|
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,$L21
|
|
addiu $4,$5,48
|
|
.set macro
|
|
.set reorder
|
|
|
|
addiu $4,$5,55
|
|
$L21:
|
|
jal saus
|
|
.set noreorder
|
|
.set nomacro
|
|
bgez $17,$L25
|
|
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
|
|
$L30:
|
|
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,$L30
|
|
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
|