58 lines
671 B
ArmAsm
58 lines
671 B
ArmAsm
|
.define _Csa, _Csb
|
||
|
.sect.text
|
||
|
_Csa:
|
||
|
LDMFD R12<, {R0}
|
||
|
LDMFD R12<, {R1}
|
||
|
STMFD R12<, {R4}
|
||
|
LDR R2, [R0, #4]
|
||
|
MOV R4,R2
|
||
|
LDR R3, [R0, #8]
|
||
|
CMP R1,R2
|
||
|
BLT 1F
|
||
|
ADD R2,R2,R3
|
||
|
CMP R1,R2
|
||
|
BGT 1F
|
||
|
ADD R2, R0, #12
|
||
|
SUB R1,R1,R4
|
||
|
ADD R2, R2, R1, LSL #2
|
||
|
LDR R2, [R2]
|
||
|
CMP R2, #0
|
||
|
BAL 2F
|
||
|
1:
|
||
|
LDR R2, [R0]
|
||
|
CMP R2, #0
|
||
|
2:
|
||
|
BNE 3F
|
||
|
BAL.L _CasErr
|
||
|
3:
|
||
|
LDMFD R12<,{R4}
|
||
|
MOV R15,R14
|
||
|
|
||
|
_Csb:
|
||
|
LDMFD R12<, {R0}
|
||
|
LDMFD R12<, {R1}
|
||
|
STMFD R12<,{R4}
|
||
|
LDR R2, [R0, #4]
|
||
|
LDR R3, [R0]
|
||
|
ADD R0, R0, #8
|
||
|
1:
|
||
|
CMP R2, #0
|
||
|
BEQ 3F
|
||
|
LDR R4, [R0]
|
||
|
CMP R4, R1
|
||
|
BNE 2F
|
||
|
LDR R3, [R0, #4]
|
||
|
BAL 3F
|
||
|
2:
|
||
|
ADD R0, R0, #8
|
||
|
SUB R2,R2,#1
|
||
|
BAL 1B
|
||
|
3:
|
||
|
CMP R3, #0
|
||
|
BNE 4F
|
||
|
BAL.L _CasErr
|
||
|
4:
|
||
|
LDMFD R12<,{R4}
|
||
|
MOV R15, R14
|
||
|
|