本帖最后由 wglzp123456 于 2019-6-15 19:21 编辑
//ARM汇编代码
0894 B570 PUSH {R4-R6,LR}
0896 4938 LDR R1,D00000978;[PC,#224] R1=0x20000FA8
0898 2200 MOVS R2,#0x0
089A 2404 MOVS R4,#0x4
089C F891 5041 LDRB.W R5,[R1,#0x41]
08A0 2301 MOVS R3,#0x1
08A2 2D05 CMP R5,#5
08A4 D262 BCS Q0000096C
08A6 E8DF F005 TBB [PC,R5]
08AA DB 03
DB 25
08AC DB 3B
DB 44
DB 59
DB 00
//0---------------------------------------------------
08B0 F5A0 42AA SUB.W R2,R0,#0x5500
08B4 3AAA SUBS R2,#0xAA
08B6 D00F BEQ Q000008D8
08B8 3A11 SUBS R2,#0x11
08BA D11A BNE Q000008F2
08BC F891 2086 LDRB.W R2,[R1,#0x86]
08C0 2A00 CMP R2,#0
08C2 D116 BNE Q000008F2
08C4 F881 408A STRB.W R4,[R1,#0x8A]
08C8 F8A1 0066 STRH.W R0,[R1,#0x66]
08CC F881 3087 STRB.W R3,[R1,#0x87]
08D0 F8A1 0088 STRH.W R0,[R1,#0x88]
08D4 2003 MOVS R0,#0x3
08D6 E01D B Q00000914
08D8 F891 2062 LDRB.W R2,[R1,#0x62]
08DC 2A00 CMP R2,#0
08DE D108 BNE Q000008F2
08E0 F881 408A STRB.W R4,[R1,#0x8A]
08E4 F821 0F42 STRH.W R0,[R1,#0x42]!
08E8 F881 3021 STRB.W R3,[R1,#0x21]
08EC 8448 STRH R0,[R1,#0x22]
08EE F801 3C01 STRB.W R3,[R1,#-0x1]
08F2 BD70 POP {R4-R6,PC}
//1--------------------------------------------------
08F4 F891 2063 LDRB.W R2,[R1,#0x63]
08F8 EB01 0342 ADD.W R3, R1,R2,LSL #1
08FC 1C52 ADDS R2,R2,#1
08FE F8A3 0042 STRH.W R0,[R3,#0x42]
0902 F8B1 3064 LDRH R3,[R1,#0x64]
0906 B2D2 UXTB R2,R2
0908 4418 ADD R0,R3
090A F8A1 0064 STRH.W R0,[R1,#0x64]
090E 2A0F CMP R2,#15
0910 D303 BCC Q0000091A
0912 2002 MOVS R0,#0x2
0914 F881 0041 STRB.W R0,[R1,#0x41]
0918 BD70 POP {R4-R6,PC}
091A F881 2063 STRB.W R2,[R1,#0x63]
091E BD70 POP {R4-R6,PC}
//2---------------------------------------------------
0920 F8B1 4064 LDRH R4,[R1,#0x64]
0924 4284 CMP R4,R0
0926 D121 BNE Q0000096C
0928 F8A1 0060 STRH.W R0,[R1,#0x60]
092C F881 3062 STRB.W R3,[R1,#0x62]
0930 E01C B Q0000096C
//3----------------------------------------------------
0932 F891 2087 LDRB.W R2,[R1,#0x87]
0936 EB01 0342 ADD.W R3, R1,R2,LSL #1
093A 1C52 ADDS R2,R2,#1
093C F8A3 0066 STRH.W R0,[R3,#0x66]
0940 F8B1 3088 LDRH R3,[R1,#0x88]
0944 B2D2 UXTB R2,R2
0946 4418 ADD R0,R3
0948 F8A1 0088 STRH.W R0,[R1,#0x88]
094C 2A0F CMP R2,#15
094E D302 BCC Q00000956
0950 F881 4041 STRB.W R4,[R1,#0x41]
0954 BD70 POP {R4-R6,PC}
//---------------------------------------------------
0956 F881 2087 STRB.W R2,[R1,#0x87]
095A BD70 POP {R4-R6,PC}
//4-----------------------------------------------------
095C F8B1 4088 LDRH R4,[R1,#0x88]
0960 4284 CMP R4,R0
0962 D103 BNE Q0000096C
0964 F8A1 0084 STRH.W R0,[R1,#0x84]
0968 F881 3086 STRB.W R3,[R1,#0x86]
096C F881 208A STRB.W R2,[R1,#0x8A]
0970 F881 2041 STRB.W R2,[R1,#0x41]
0974 BD70 POP {R4-R6,PC}
//-----------------------------------------------------------------
对应的C语言如下
u16 x2,x3,x4;
u8 x5;
x2=0;
x4=4;
x5=uxD0FA8.u841;
x3=1;
switch(x5){
case 0:
if(u16a==0x55AA){
if(uxD0FA8.u886==0){
uxD0FA8.u88A=x4;
uxD0FA8.u1666[0]=u16a;
uxD0FA8.u887=x3;
uxD0FA8.u1688=u16a;
uxD0FA8.u841=3;
}
}else if(u16a==0x55BB){
if(uxD0FA8.u862==0){
uxD0FA8.u88A=x4;
uxD0FA8.u1642[0]=u16a;
uxD0FA8.u863=x3;
uxD0FA8.u1664=u16a;
uxD0FA8.u841=x3;
}
}
break;
case 1:
x2=uxD0FA8.u863;
uxD0FA8.u1642[x2++]=u16a;
uxD0FA8.u1664+=u16a;
if(x2>=15){
uxD0FA8.u841=2;
}else{
uxD0FA8.u863=x2;
}
break;
case 2:
if(uxD0FA8.u1664==u16a){
uxD0FA8.u1642[15]=u16a;
uxD0FA8.u862=x3;
}
uxD0FA8.u88A=x2;
uxD0FA8.u841=x2;
break;
case 3:
x2=uxD0FA8.u887;
uxD0FA8.u1666[x2++]=u16a;
uxD0FA8.u1688+=u16a;
if(x2>=15){
uxD0FA8.u841=x4;
}else{
uxD0FA8.u887=x2;
}
break;
case 4:
x4=uxD0FA8.u1688;
if(x4==u16a){
uxD0FA8.u1666[15]=u16a;
uxD0FA8.u886=x3;
}else{
uxD0FA8.u88A=x2;
uxD0FA8.u841=x2;
}
break;
default:
break;
}
|