- 积分
- 412
- 实力分
- 点
- 金钱数
- 两
- 技术分
- 分
- 贡献分
- 分
|
楼主 |
发表于 2009-8-3 11:05:18
|
显示全部楼层
改到这里遇到难题了,上面那个按我自己的理解按自己减去了。
#ifdef S7Cv47
#define RAM 0xA8A7F0C0
#define LIBB6 0xA028B6AB //B6: char GetProfile()
#define LIBB8 0xA14268F0 //B8: int sdiv(int denom,int number)
#define LIB16 0xA14254F1 //16: int sprintf(char *buf, const char *str, ...)
#define LIB4E 0xA09A56A9 //4E: int MsgBoxError(int flag, int LgpId)
#endif
0x1CE510: 0150A0E10040A0E1090050E3 00509FE535FF2FE18BE006A0 ;E1
ROM:A01CE510 00 50 9F E5 LDR R5, =unk_A006E08B
ROM:A01CE514 35 FF 2F E1 BLX R5
0x961AD8: 0022009200AB0420 004A904773E006A0 ;E2
ROM:A0000000 CODE16
ROM:A0000000 00 4A LDR R2, =unk_A006E073
ROM:A0000002 90 47 BLX R2
sub_A006E02C //这些目前全部用了这种函数定义形式:
ROM:A006E02C FF B5 PUSH {R0-R7,LR}
ROM:A006E02E B6 DF LDR R1, =GetProfile //这些暂时没和define中的对应
BLX R1
ROM:A006E030 99 28 CMP R0, #0x99
ROM:A006E032 1D D0 BEQ loc_A006E070
ROM:A006E034 A4 B0 SUB SP, SP, #0x90
ROM:A006E036 84 B0 SUB SP, SP, #0x10
ROM:A006E038 68 46 MOV R0, SP
ROM:A006E03A 17 4A LDR R2, loc_A006E098
ROM:A006E03C 90 47 BLX R2
ROM:A006E03E 04 B0 ADD SP, SP, #0x10
ROM:A006E040 16 4D LDR R5, =RAM
ROM:A006E042 2E 68 LDR R6, [R5]
ROM:A006E044 99 1B SUB R1, R3, R6
ROM:A006E046 16 48 LDR R0, loc_A006E0A0
ROM:A006E048 B8 DF SWI 0xB8 //这里三个libB8不知道用哪个寄存器存储。
ROM:A006E04A 06 1C ADD R6, R0, #0
ROM:A006E04C 15 48 LDR R0, loc_A006E0A4
ROM:A006E04E B8 DF SWI 0xB8 //除了这个,那三个函数,都是用R1来存,不知道行不行?
ROM:A006E050 05 1C ADD R5, R0, #0
ROM:A006E052 3C 20 MOV R0, #0x3C
ROM:A006E054 B8 DF SWI 0xB8
ROM:A006E056 32 1C ADD R2, R6, #0
ROM:A006E058 2B 1C ADD R3, R5, #0
ROM:A006E05A 00 90 STR R0, [SP,#0]
ROM:A006E05C 01 91 STR R1, [SP,#0x4]
ROM:A006E05E 12 49 LDR R1, =FORMAT
ROM:A006E060 10 A8 ADD R0, SP, #0x40
ROM:A006E062 05 1C ADD R5, R0, #0
ROM:A006E064 16 DF LDR R1, =sprintf
BLX R1
ROM:A006E066 01 20 MOV R0, #1
ROM:A006E068 29 1C ADD R1, R5, #0
ROM:A006E06A 00 22 MOV R2, #0
ROM:A006E06C 4E DF LDR R1, =MsgBoxError
BLX R1
ROM:A006E06E 24 B0 ADD SP, SP, #0x90
loc_A006E070:
ROM:A006E070 FF BD POP {R0-R7,PC}
ROM:A006E072 0A 4A LDR R2, =RAM
ROM:A006E074 10 68 LDR R0, [R2]
ROM:A006E076 00 28 CMP R0, #0
ROM:A006E078 00 D1 BNE loc_A006E07C
ROM:A006E07A 13 60 STR R3, [R2]
loc_A006E07C:
ROM:A006E07C 00 22 MOV R2, #0
ROM:A006E07E 00 92 STR R2, [SP]
ROM:A006E080 6B 46 MOV R3, SP
ROM:A006E082 04 20 MOV R0, #4
ROM:A006E084 72 46 MOV R2, LR
ROM:A006E086 04 32 ADD R2, #4
ROM:A006E088 10 47 BX R2
ROM:A006E08A 00 B5 PUSH {LR}
ROM:A006E08C FF F7 CE FF BL sub_A006E02C
ROM:A006E090 0D 1C ADD R5, R1, #0
ROM:A006E092 04 1C ADD R4, R0, #0
ROM:A006E094 09 28 CMP R0, #9
ROM:A006E096 00 BD POP {PC}
loc_A006E098:
ROM:A006E098 58 1C 1F A0 dword_A006E098 DCD 0xA01F1C58 ; DATA XREF: sub_A006E02C+Er
ROM:A006E09C C0 F0 A7 A8 dword_A006E09C DCD 0xA8A7F0C0 ; DATA XREF: sub_A006E02C+14r
loc_A006E0A0:
ROM:A00000A0 80 51 STR R0, [R0,R6]
ROM:A00000A2 01 00 LSL R1, R0, #0
loc_A006E0A4:
ROM:A00000A4 10 0E LSR R0, R2, #0x18
ROM:A00000A6 00 00 LSL R0, R0, #0
ROM:A006E0A8 00 E0 06 A0 off_A006E0A8 DCD s_UptimeId_02i0 ; DATA XREF: sub_A006E02C+32r
ROM:A006E0A8 ; "Uptime %id_%02i:%02i:%02i"
DATA
FORMAT
DCB "Uptime %id_%02i:%02i:%02i",00 |
|