313 строки
3.5 KiB
ArmAsm
313 строки
3.5 KiB
ArmAsm
|
.text
|
||
|
.align 4
|
||
|
.global __memcmp, memcmp
|
||
|
__memcmp:
|
||
|
memcmp:
|
||
|
#if 1
|
||
|
cmp %o2, 0
|
||
|
ble L3
|
||
|
mov 0, %g3
|
||
|
L5:
|
||
|
ldub [%o0], %g2
|
||
|
ldub [%o1], %g3
|
||
|
sub %g2, %g3, %g2
|
||
|
mov %g2, %g3
|
||
|
sll %g2, 24, %g2
|
||
|
|
||
|
cmp %g2, 0
|
||
|
bne L3
|
||
|
add %o0, 1, %o0
|
||
|
|
||
|
add %o2, -1, %o2
|
||
|
|
||
|
cmp %o2, 0
|
||
|
bg L5
|
||
|
add %o1, 1, %o1
|
||
|
L3:
|
||
|
sll %g3, 24, %o0
|
||
|
sra %o0, 24, %o0
|
||
|
|
||
|
retl
|
||
|
nop
|
||
|
#else
|
||
|
save %sp, -104, %sp
|
||
|
mov %i2, %o4
|
||
|
mov %i0, %o0
|
||
|
|
||
|
cmp %o4, 15
|
||
|
ble L72
|
||
|
mov %i1, %i2
|
||
|
|
||
|
andcc %i2, 3, %g0
|
||
|
be L161
|
||
|
andcc %o0, 3, %g2
|
||
|
L75:
|
||
|
ldub [%o0], %g3
|
||
|
ldub [%i2], %g2
|
||
|
add %o0,1, %o0
|
||
|
|
||
|
subcc %g3, %g2, %i0
|
||
|
bne L156
|
||
|
add %i2, 1, %i2
|
||
|
|
||
|
andcc %i2, 3, %g0
|
||
|
bne L75
|
||
|
add %o4, -1, %o4
|
||
|
|
||
|
andcc %o0, 3, %g2
|
||
|
L161:
|
||
|
bne,a L78
|
||
|
mov %i2, %i1
|
||
|
|
||
|
mov %o0, %i5
|
||
|
mov %i2, %i3
|
||
|
srl %o4, 2, %i4
|
||
|
|
||
|
cmp %i4, 0
|
||
|
bge L93
|
||
|
mov %i4, %g2
|
||
|
|
||
|
add %i4, 3, %g2
|
||
|
L93:
|
||
|
sra %g2, 2, %g2
|
||
|
sll %g2, 2, %g2
|
||
|
sub %i4, %g2, %g2
|
||
|
|
||
|
cmp %g2, 1
|
||
|
be,a L88
|
||
|
add %o0, 4, %i5
|
||
|
|
||
|
bg L94
|
||
|
cmp %g2, 2
|
||
|
|
||
|
cmp %g2, 0
|
||
|
be,a L86
|
||
|
ld [%o0], %g3
|
||
|
|
||
|
b L162
|
||
|
ld [%i5], %g3
|
||
|
L94:
|
||
|
be L81
|
||
|
cmp %g2, 3
|
||
|
|
||
|
be,a L83
|
||
|
add %o0, -4, %i5
|
||
|
|
||
|
b L162
|
||
|
ld [%i5], %g3
|
||
|
L81:
|
||
|
add %o0, -8, %i5
|
||
|
ld [%o0], %g3
|
||
|
add %i2, -8, %i3
|
||
|
ld [%i2], %g2
|
||
|
|
||
|
b L82
|
||
|
add %i4, 2, %i4
|
||
|
L83:
|
||
|
ld [%o0], %g4
|
||
|
add %i2, -4, %i3
|
||
|
ld [%i2], %g1
|
||
|
|
||
|
b L84
|
||
|
add %i4, 1, %i4
|
||
|
L86:
|
||
|
b L87
|
||
|
ld [%i2], %g2
|
||
|
L88:
|
||
|
add %i2, 4, %i3
|
||
|
ld [%o0], %g4
|
||
|
add %i4, -1, %i4
|
||
|
ld [%i2], %g1
|
||
|
L95:
|
||
|
ld [%i5], %g3
|
||
|
L162:
|
||
|
cmp %g4, %g1
|
||
|
be L87
|
||
|
ld [%i3], %g2
|
||
|
|
||
|
cmp %g4, %g1
|
||
|
L163:
|
||
|
bleu L114
|
||
|
mov -1, %i0
|
||
|
|
||
|
b L114
|
||
|
mov 1, %i0
|
||
|
L87:
|
||
|
ld [%i5 + 4], %g4
|
||
|
cmp %g3, %g2
|
||
|
bne L163
|
||
|
ld [%i3 + 4], %g1
|
||
|
L84:
|
||
|
ld [%i5 + 8], %g3
|
||
|
|
||
|
cmp %g4, %g1
|
||
|
bne L163
|
||
|
ld [%i3 + 8], %g2
|
||
|
L82:
|
||
|
ld [%i5 + 12], %g4
|
||
|
cmp %g3, %g2
|
||
|
bne L163
|
||
|
ld [%i3 + 12], %g1
|
||
|
|
||
|
add %i5, 16, %i5
|
||
|
|
||
|
addcc %i4, -4, %i4
|
||
|
bne L95
|
||
|
add %i3, 16, %i3
|
||
|
|
||
|
cmp %g4, %g1
|
||
|
bne L163
|
||
|
nop
|
||
|
|
||
|
b L114
|
||
|
mov 0, %i0
|
||
|
L78:
|
||
|
srl %o4, 2, %i0
|
||
|
and %o0, -4, %i3
|
||
|
orcc %i0, %g0, %g3
|
||
|
sll %g2, 3, %o7
|
||
|
mov 32, %g2
|
||
|
|
||
|
bge L129
|
||
|
sub %g2, %o7, %o1
|
||
|
|
||
|
add %i0, 3, %g3
|
||
|
L129:
|
||
|
sra %g3, 2, %g2
|
||
|
sll %g2, 2, %g2
|
||
|
sub %i0, %g2, %g2
|
||
|
|
||
|
cmp %g2, 1
|
||
|
be,a L124
|
||
|
ld [%i3], %o3
|
||
|
|
||
|
bg L130
|
||
|
cmp %g2, 2
|
||
|
|
||
|
cmp %g2, 0
|
||
|
be,a L122
|
||
|
ld [%i3], %o2
|
||
|
|
||
|
b L164
|
||
|
sll %o3, %o7, %g3
|
||
|
L130:
|
||
|
be L117
|
||
|
cmp %g2, 3
|
||
|
|
||
|
be,a L119
|
||
|
ld [%i3], %g1
|
||
|
|
||
|
b L164
|
||
|
sll %o3, %o7, %g3
|
||
|
L117:
|
||
|
ld [%i3], %g4
|
||
|
add %i2, -8, %i1
|
||
|
ld [%i3 + 4], %o3
|
||
|
add %i0, 2, %i0
|
||
|
ld [%i2], %i4
|
||
|
|
||
|
b L118
|
||
|
add %i3, -4, %i3
|
||
|
L119:
|
||
|
ld [%i3 + 4], %g4
|
||
|
add %i2, -4, %i1
|
||
|
ld [%i2], %i5
|
||
|
|
||
|
b L120
|
||
|
add %i0, 1, %i0
|
||
|
L122:
|
||
|
ld [%i3 + 4], %g1
|
||
|
ld [%i2], %i4
|
||
|
|
||
|
b L123
|
||
|
add %i3, 4, %i3
|
||
|
L124:
|
||
|
add %i2, 4, %i1
|
||
|
ld [%i3 + 4], %o2
|
||
|
add %i0, -1, %i0
|
||
|
ld [%i2], %i5
|
||
|
add %i3, 8, %i3
|
||
|
L131:
|
||
|
sll %o3, %o7, %g3
|
||
|
L164:
|
||
|
srl %o2, %o1, %g2
|
||
|
ld [%i3], %g1
|
||
|
or %g3, %g2, %g3
|
||
|
|
||
|
cmp %g3, %i5
|
||
|
bne L163
|
||
|
ld [%i1], %i4
|
||
|
L123:
|
||
|
sll %o2, %o7, %g3
|
||
|
srl %g1, %o1, %g2
|
||
|
ld [%i3 + 4], %g4
|
||
|
or %g3, %g2, %g3
|
||
|
|
||
|
cmp %g3, %i4
|
||
|
bne L163
|
||
|
ld [%i1 + 4], %i5
|
||
|
L120:
|
||
|
sll %g1, %o7, %g3
|
||
|
srl %g4, %o1, %g2
|
||
|
ld [%i3 + 8], %o3
|
||
|
or %g3, %g2, %g3
|
||
|
|
||
|
cmp %g3, %i5
|
||
|
bne L163
|
||
|
ld [%i1 + 8], %i4
|
||
|
L118:
|
||
|
sll %g4, %o7, %g3
|
||
|
srl %o3, %o1, %g2
|
||
|
ld [%i3 + 12], %o2
|
||
|
or %g3, %g2, %g3
|
||
|
|
||
|
cmp %g3, %i4
|
||
|
bne L163
|
||
|
ld [%i1 + 12], %i5
|
||
|
|
||
|
add %i3, 16, %i3
|
||
|
addcc %i0, -4, %i0
|
||
|
bne L131
|
||
|
add %i1, 16, %i1
|
||
|
|
||
|
sll %o3, %o7, %g3
|
||
|
srl %o2, %o1, %g2
|
||
|
or %g3, %g2, %g3
|
||
|
|
||
|
cmp %g3, %i5
|
||
|
be,a L114
|
||
|
mov 0, %i0
|
||
|
|
||
|
b,a L163
|
||
|
L114:
|
||
|
cmp %i0, 0
|
||
|
bne L156
|
||
|
and %o4, -4, %g2
|
||
|
|
||
|
add %o0, %g2, %o0
|
||
|
add %i2, %g2, %i2
|
||
|
and %o4, 3, %o4
|
||
|
L72:
|
||
|
cmp %o4, 0
|
||
|
be L156
|
||
|
mov 0, %i0
|
||
|
|
||
|
ldub [%o0], %g3
|
||
|
L165:
|
||
|
ldub [%i2], %g2
|
||
|
add %o0, 1, %o0
|
||
|
|
||
|
subcc %g3, %g2, %i0
|
||
|
bne L156
|
||
|
add %i2, 1, %i2
|
||
|
|
||
|
addcc %o4, -1, %o4
|
||
|
bne,a L165
|
||
|
ldub [%o0], %g3
|
||
|
|
||
|
mov 0, %i0
|
||
|
L156:
|
||
|
ret
|
||
|
restore
|
||
|
#endif
|