能力值:
( LV4,RANK:40 )
|
-
-
2 楼
eq是条件 应该是相等的意思
后面的sb 应该跟汇编差不多 拷贝多少字节...
个人理解 不一定对
|
能力值:
( LV2,RANK:10 )
在线值:
|
-
-
3 楼
呵呵
Peter在玩ARM
又是我。。。
UPK也已经回了。。
再回一次吧 确切的表述应该是EQ(相等)条件下,将 R1-R4 地址处的有符号字节数据加载到寄存器 R1 前面应该还有一句 CMP R1,XX 吧?
|
能力值:
( LV2,RANK:10 )
在线值:
|
-
-
4 楼
整句是这样某牛是这样修改:
.text:007CD8B4 00 00 00 00 ANDEQ R0, R0, R0
.text:007CD8B8
.text:007CD8B8 loc_7CD8B8 ; DATA XREF: sub_7CD8BC+4r
.text:007CD8B8 D4 10 11 01 LDREQSB R1, [R1,-R4] //但是没有cmp之类,所以才不好解这里?
.text:007CD8BC
.text:007CD8BC ; =============== S U B R O U T I N E =======================================
.text:007CD8BC
.text:007CD8BC
.text:007CD8BC sub_7CD8BC ; CODE XREF: GUI::Surface::initGL(int,int,GUI::Surface::SurfaceRotate)+348p
.text:007CD8BC 50 43 2D E9 STMFD SP!, {R4,R6,R8,R9,LR}
.text:007CD8C0 10 60 1F E5 LDR R6, loc_7CD8B8 //----->取007CD8B8
.text:007CD8C4 0F 60 86 E0 ADD R6, R6, PC
.text:007CD8C8 07 00 A0 E1 MOV R0, R7
.text:007CD8CC E2 82 32 EB BL __floatsisf
.text:007CD8D0 00 80 A0 E1 MOV R8, R0
.text:007CD8D4 05 00 A0 E1 MOV R0, R5
.text:007CD8D8 DF 82 32 EB BL __floatsisf
.text:007CD8DC
.text:007CD8DC loc_7CD8DC ; CODE XREF: .text:007CD964j
.text:007CD8DC 00 90 A0 E1 MOV R9, R0
.text:007CD8E0 2D 0E A0 E3 MOV R0, #0x2D0
.text:007CD8E4 DC 82 32 EB BL __floatsisf
.text:007CD8E8 00 40 A0 E1 MOV R4, R0
.text:007CD8EC 05 0C A0 E3 MOV R0, #0x500
.text:007CD8F0 D9 82 32 EB BL __floatsisf
.text:007CD8F4 05 00 57 E1 CMP R7, R5
.text:007CD8F8 08 10 A0 C1 MOVGT R1, R8
.text:007CD8FC 09 10 A0 B1 MOVLT R1, R9
.text:007CD900 66 83 32 EB BL __divsf3
.text:007CD904 05 00 57 E1 CMP R7, R5
.text:007CD908 00 00 86 C5 STRGT R0, [R6]
.text:007CD90C 04 00 86 B5 STRLT R0, [R6,#4]
.text:007CD910 04 00 A0 E1 MOV R0, R4
.text:007CD914 09 10 A0 C1 MOVGT R1, R9
.text:007CD918 08 10 A0 B1 MOVLT R1, R8
.text:007CD91C 5F 83 32 EB BL __divsf3
.text:007CD920 05 00 57 E1 CMP R7, R5
.text:007CD924 04 00 86 C5 STRGT R0, [R6,#4]
.text:007CD928 00 00 86 B5 STRLT R0, [R6]
.text:007CD92C 50 83 BD E8 LDMFD SP!, {R4,R6,R8,R9,PC}
.text:007CD92C ; End of function sub_7CD8BC
|
能力值:
( LV2,RANK:10 )
在线值:
|
-
-
5 楼
cmp 比较应该还在前面
因为 ANDEQ 也使用了同一条件
|
能力值:
( LV2,RANK:10 )
在线值:
|
-
-
6 楼
.text:007CD8B0 EXPORT _pieopen
.text:007CD8B0 _pieopen ; CODE XREF: sub_7B7C50+158p
.text:007CD8B0 ; sub_7B7C50:loc_7B7E1Cp
.text:007CD8B0 ; .text:007CD95Cp
.text:007CD8B0 0E F0 A0 E1 RET
.text:007CD8B0 ; End of function _pieopen
.text:007CD8B0
.text:007CD8B4 ; ---------------------------------------------------------------------------
.text:007CD8B4 00 00 00 00 ANDEQ R0, R0, R0
.text:007CD8B8
.text:007CD8B8 loc_7CD8B8 ; DATA XREF: sub_7CD8BC+4r
.text:007CD8B8 D4 10 11 01 LDREQSB R1, [R1,-R4]
.text:007CD8BC
.text:007CD8BC ; =============== S U B R O U T I N E =======================================
.text:007CD8BC
.text:007CD8BC
.text:007CD8BC sub_7CD8BC ; CODE XREF: GUI::Surface::initGL(int,int,GUI::Surface::SurfaceRotate)+348p
.text:007CD8BC 50 43 2D E9 STMFD SP!, {R4,R6,R8,R9,LR}
.text:007CD8C0 10 60 1F E5 LDR R6, loc_7CD8B8
.text:007CD8C4 0F 60 86 E0 ADD R6, R6, PC
.text:007CD8C8 07 00 A0 E1 MOV R0, R7
.text:007CD8CC E2 82 32 EB BL __floatsisf
.text:007CD8D0 00 80 A0 E1 MOV R8, R0
.text:007CD8D4 05 00 A0 E1 MOV R0, R5
.text:007CD8D8 DF 82 32 EB BL __floatsisf
.text:007CD8DC
.text:007CD8DC loc_7CD8DC ; CODE XREF: .text:007CD964j
.text:007CD8DC 00 90 A0 E1 MOV R9, R0
.text:007CD8E0 2D 0E A0 E3 MOV R0, #0x2D0
.text:007CD8E4 DC 82 32 EB BL __floatsisf
.text:007CD8E8 00 40 A0 E1 MOV R4, R0
.text:007CD8EC 05 0C A0 E3 MOV R0, #0x500
.text:007CD8F0 D9 82 32 EB BL __floatsisf
.text:007CD8F4 05 00 57 E1 CMP R7, R5
.text:007CD8F8 08 10 A0 C1 MOVGT R1, R8
.text:007CD8FC 09 10 A0 B1 MOVLT R1, R9
.text:007CD900 66 83 32 EB BL __divsf3
.text:007CD904 05 00 57 E1 CMP R7, R5
.text:007CD908 00 00 86 C5 STRGT R0, [R6]
.text:007CD90C 04 00 86 B5 STRLT R0, [R6,#4]
.text:007CD910 04 00 A0 E1 MOV R0, R4
.text:007CD914 09 10 A0 C1 MOVGT R1, R9
.text:007CD918 08 10 A0 B1 MOVLT R1, R8
.text:007CD91C 5F 83 32 EB BL __divsf3
.text:007CD920 05 00 57 E1 CMP R7, R5
.text:007CD924 04 00 86 C5 STRGT R0, [R6,#4]
.text:007CD928 00 00 86 B5 STRLT R0, [R6]
.text:007CD92C 50 83 BD E8 LDMFD SP!, {R4,R6,R8,R9,PC}
.text:007CD92C ; End of function sub_7CD8BC
.text:007CD92C
.text:007CD930 ; ---------------------------------------------------------------------------
.text:007CD930 40 00 9F E5 LDR R0, =(aAmStartNCom_ga - 0x7CD940)
.text:007CD934 03 30 94 E7 LDR R3, [R4,R3]
.text:007CD938 00 00 8F E0 ADD R0, PC, R0 ; "am start -n com.garmin.android.apps.gmo"...
.text:007CD93C 00 50 83 E5 STR R5, [R3]
.text:007CD940 D0 94 FA EB BL system
.text:007CD944 05 00 A0 E1 MOV R0, R5
.text:007CD948 B9 94 FA EB BL exit
.text:007CD94C ; ---------------------------------------------------------------------------
.text:007CD94C 20 30 9F E5 LDR R3, =0xFFFF65FC
.text:007CD950 00 20 A0 E3 MOV R2, #0
.text:007CD954 03 30 94 E7 LDR R3, [R4,R3]
.text:007CD958 00 20 83 E5 STR R2, [R3]
.text:007CD95C D3 FF FF EB BL _pieopen
.text:007CD960 00 30 95 E5 LDR R3, [R5]
.text:007CD964 DC FF FF EA B loc_7CD8DC
.text:007CD964 ; ---------------------------------------------------------------------------
.text:007CD968 80 90 10 01 DCD loc_1109080
.text:007CD96C D4 69 FF FF D8 69+DCD 0xFFFF69D4, 0xFFFF69D8
.text:007CD974 FC 65 FF FF dword_7CD974 DCD 0xFFFF65FC ; DATA XREF: .text:007CD94Cr
.text:007CD978 10 B4 E0 00 off_7CD978 DCD aAmStartNCom_ga - 0x7CD940
.text:007CD978 ; DATA XREF: .text:007CD930r
.text:007CD978 ; "am start -n com.garmin.android.apps.gmo"...
就是没有cmp,不知道为什么这样?
|
能力值:
( LV2,RANK:10 )
在线值:
|
-
-
7 楼
是否有跳转接过来?
|
能力值:
( LV2,RANK:10 )
在线值:
|
-
-
9 楼
呃
如果是有调用的话
应该是跳转到 7CD8B4 吧
|
能力值:
( LV2,RANK:10 )
在线值:
|
-
-
10 楼
00 00 00 00 就相当于nop,啥也不作?不知道这个LDREQSB R1, [R1,-R4]在这里只是进行腾出空间?
|
能力值:
( LV3,RANK:20 )
|
-
-
11 楼
LDR R6 loc_7CD8B8
这条指令就说明了7CD8B8处放了一个4BYTE的数据,这个指令就是把该地址里存的4Byte数据存入R6中
即之后R6 == 0x011110D4
显示那一坨LDREQSB是ARM dissambler自作主张翻译出来的
.text:007CD8B8
.text:007CD8B8 loc_7CD8B8 ; DATA XREF: sub_7CD8BC+4r
.text:007CD8B8 D4 10 11 01 LDREQSB R1, [R1,-R4]
这三行其实等价于一个数据定义指令
.text:007CD8B8
DCD 0x011110D4
|