📄 dir.lst
字号:
00000056 D004 BEQ L_10 ; T=0x00000062
00000058 200B MOV R0,#0xB
0000005A 4468 ADD R0,R13
ARM COMPILER V2.42, dir 27/03/06 10:45:48 PAGE 13
0000005C 7800 LDRB R0,[R0,#0x0] ; fileEntry+11
0000005E 1C39 MOV R1,R7 ; loc
00000060 7148 STRB R0,[R1,#0x5]
00000062 L_10:
159: if((((euint32 )fileEntry.FirstClusterHigh)<<16)+ fileEntry.FirstClusterLow==0){
00000062 AA05 ADD R2,R13,#0x14
00000064 8810 LDRH R0,[R2,#0x0] ; fileEntry+20
00000066 0400 LSL R0,R0,#0x10
00000068 211A MOV R1,#0x1A
0000006A 4469 ADD R1,R13
0000006C 880B LDRH R3,[R1,#0x0] ; fileEntry+26
0000006E 18C0 ADD R0,R3
00000070 2800 CMP R0,#0x0
00000072 D101 BNE L_11 ; T=0x00000078
160: return(1); /* Lie about cluster, 0 means not found! */
00000074 2001 MOV R0,#0x1
00000076 E00D B L_12 ; T=0x00000094
161: }else{
00000078 L_11:
162: return
00000078 8810 LDRH R0,[R2,#0x0] ; fileEntry+20
0000007A 0400 LSL R0,R0,#0x10
0000007C 8809 LDRH R1,[R1,#0x0] ; fileEntry+26
0000007E 1840 ADD R0,R1
00000080 E008 B L_12 ; T=0x00000094
170: }
00000082 L_2:
00000082 3401 ADD R4,#0x1
00000084 0624 LSL R4,R4,#0x18
00000086 0E24 LSR R4,R4,#0x18
00000088 L_4:
00000088 1C20 MOV R0,R4 ; c
0000008A 0600 LSL R0,R0,#0x18 ; c
0000008C 0E00 LSR R0,R0,#0x18
0000008E 2810 CMP R0,#0x10
00000090 DBBD BLT L_5 ; T=0x0000000E
171: return(0);
00000092 2000 MOV R0,#0x0
00000094 ; SCOPE-END
172: }
00000094 L_12:
00000094 B008 ADD R13,#0x20
00000096 BCF0 POP {R4-R7}
00000098 BC08 POP {R3}
0000009A 4718 BX R3
0000009C ENDP ; 'dir_findFileinBuf?T'
*** CODE SEGMENT '?PR?dir_findFreeEntryinBuf?T?dir':
180: euint32 dir_findFreeEntryinBuf(euint8* buf, FileLocation *loc)
00000000 B470 PUSH {R4-R6}
00000002 1C0E MOV R6,R1 ; loc
00000004 ---- Variable 'loc' assigned to Register 'R6' ----
00000004 1C05 MOV R5,R0 ; buf
00000006 ---- Variable 'buf' assigned to Register 'R5' ----
00000006 B088 SUB R13,#0x20
181: {
00000008 ; SCOPE-START
185: for(c=0;c<16;c++){
00000008 2400 MOV R4,#0x0
0000000A ---- Variable 'c' assigned to Register 'R4' ----
0000000A E023 B L_16 ; T=0x00000054
0000000C L_17:
186: fileEntry = *(((FileRecord*)buf) + c);
0000000C 1C20 MOV R0,R4 ; c
0000000E 0602 LSL R2,R0,#0x18 ; c
00000010 0E12 LSR R2,R2,#0x18
00000012 0152 LSL R2,R2,#0x5
ARM COMPILER V2.42, dir 27/03/06 10:45:48 PAGE 14
00000014 1C29 MOV R1,R5 ; buf
00000016 1889 ADD R1,R2 ; buf
00000018 A800 ADD R0,R13,#0x0
0000001A 2208 MOV R2,#0x8
0000001C L_74:
0000001C C908 LDMIA R1!,{R3}
0000001E C008 STMIA R0!,{R3}
00000020 1E52 SUB R2,R2,#0x1
00000022 D1FB BNE L_74 ; T=0x0000001C
187: if( !( (fileEntry.Attribute & 0x0F) == 0x0F ) ){
00000024 200B MOV R0,#0xB
00000026 4468 ADD R0,R13
00000028 7800 LDRB R0,[R0,#0x0] ; fileEntry+11
0000002A 210F MOV R1,#0xF
0000002C 4008 AND R0,R1
0000002E 280F CMP R0,#0xF
00000030 D00D BEQ L_14 ; T=0x0000004E
188: if(fileEntry.FileName[0] == 0x00 ||
00000032 A800 ADD R0,R13,#0x0
00000034 7800 LDRB R0,[R0,#0x0] ; fileEntry
00000036 2800 CMP R0,#0x0
00000038 D001 BEQ L_21 ; T=0x0000003E
0000003A 28E5 CMP R0,#0xE5
0000003C D107 BNE L_14 ; T=0x0000004E
0000003E L_21:
190: if(loc)loc->Offset=c;
0000003E 1C30 MOV R0,R6 ; loc
00000040 2800 CMP R0,#0x0 ; loc
00000042 D002 BEQ L_22 ; T=0x0000004A
00000044 1C20 MOV R0,R4 ; c
00000046 1C31 MOV R1,R6 ; loc
00000048 7108 STRB R0,[R1,#0x4]
0000004A L_22:
191: return(1);
0000004A 2001 MOV R0,#0x1
0000004C E008 B L_23 ; T=0x00000060
194: }
0000004E L_14:
0000004E 3401 ADD R4,#0x1
00000050 0624 LSL R4,R4,#0x18
00000052 0E24 LSR R4,R4,#0x18
00000054 L_16:
00000054 1C20 MOV R0,R4 ; c
00000056 0600 LSL R0,R0,#0x18 ; c
00000058 0E00 LSR R0,R0,#0x18
0000005A 2810 CMP R0,#0x10
0000005C DBD6 BLT L_17 ; T=0x0000000C
195: return(0);
0000005E 2000 MOV R0,#0x0
00000060 ; SCOPE-END
196: }
00000060 L_23:
00000060 B008 ADD R13,#0x20
00000062 BC70 POP {R4-R6}
00000064 4770 BX R14
00000066 ENDP ; 'dir_findFreeEntryinBuf?T'
*** CODE SEGMENT '?PR?dir_findinBuf?T?dir':
203: euint32 dir_findinBuf(euint8 *buf, eint8 *fatname, FileLocation *loc, euint8 mode)
00000000 B530 PUSH {R4-R5,LR}
00000002 ---- Variable 'mode' assigned to Register 'R3' ----
00000002 1C14 MOV R4,R2 ; loc
00000004 ---- Variable 'loc' assigned to Register 'R4' ----
00000004 1C0A MOV R2,R1 ; fatname
00000006 ---- Variable 'fatname' assigned to Register 'R2' ----
00000006 1C05 MOV R5,R0 ; buf
00000008 ---- Variable 'buf' assigned to Register 'R5' ----
ARM COMPILER V2.42, dir 27/03/06 10:45:48 PAGE 15
205: switch(mode){
00000008 1C18 MOV R0,R3 ; mode
0000000A 2801 CMP R0,#0x1 ; mode
0000000C D007 BEQ L_27 ; T=0x0000001E
0000000E 2800 CMP R0,#0x0 ; mode
00000010 D10A BNE L_26 ; T=0x00000028
206: case DIRFIND_FILE:
00000012 L_25:
207: return(dir_findFileinBuf(buf,fatname,loc));
00000012 1C28 MOV R0,R5 ; buf
00000014 1C11 MOV R1,R2 ; fatname
00000016 1C22 MOV R2,R4 ; loc
00000018 F7FF BL dir_findFileinBuf?T ; T=0x0001 (1)
0000001A FFF2 BL dir_findFileinBuf?T ; T=0x0001 (2)
0000001C E005 B L_28 ; T=0x0000002A
209: case DIRFIND_FREE:
0000001E L_27:
210: return(dir_findFreeEntryinBuf(buf,loc));
0000001E 1C28 MOV R0,R5 ; buf
00000020 1C21 MOV R1,R4 ; loc
00000022 F7FF BL dir_findFreeEntryinBuf?T ; T=0x0001 (1)
00000024 FFED BL dir_findFreeEntryinBuf?T ; T=0x0001 (2)
00000026 E000 B L_28 ; T=0x0000002A
212: default:
00000028 L_26:
213: return(0);
00000028 2000 MOV R0,#0x0
217: }
0000002A L_28:
0000002A BC30 POP {R4-R5}
0000002C BC08 POP {R3}
0000002E 4718 BX R3
00000030 ENDP ; 'dir_findinBuf?T'
*** CODE SEGMENT '?PR?dir_findinCluster?T?dir':
226: euint32 dir_findinCluster(FileSystem *fs,euint32 cluster,eint8 *fatname, FileLocation *loc, euint8 mode)
00000000 B5F0 PUSH {R4-R7,LR}
00000002 1C1F MOV R7,R3 ; loc
00000004 ---- Variable 'loc' assigned to Register 'R7' ----
00000004 1C16 MOV R6,R2 ; fatname
00000006 ---- Variable 'fatname' assigned to Register 'R6' ----
00000006 1C0D MOV R5,R1 ; cluster
00000008 ---- Variable 'cluster' assigned to Register 'R5' ----
00000008 1C04 MOV R4,R0 ; fs
0000000A ---- Variable 'fs' assigned to Register 'R4' ----
0000000A B083 SUB R13,#0xC
227: {
0000000C ; SCOPE-START
228: euint8 c,*buf=0;
0000000C 2000 MOV R0,#0x0
0000000E 9001 STR R0,[R13,#0x4] ; buf
231: for(c=0;c<fs->volumeId.SectorsPerCluster;c++){
00000010 2100 MOV R1,#0x0
00000012 A800 ADD R0,R13,#0x0
00000014 7001 STRB R1,[R0,#0x0] ; c
00000016 E02E B L_31 ; T=0x00000076
00000018 L_32:
232: buf = part_getSect(fs->part,fs_clusterToSector(fs,cluster)+c,IOM_MODE_READONLY);
00000018 1C20 MOV R0,R4 ; fs
0000001A 1C29 MOV R1,R5 ; cluster
0000001C F7FF BL fs_clusterToSector?T ; T=0x0001 (1)
0000001E FFF0 BL fs_clusterToSector?T ; T=0x0001 (2)
00000020 A900 ADD R1,R13,#0x0
00000022 7809 LDRB R1,[R1,#0x0] ; c
00000024 1841 ADD R1,R0,R1 ; fs_clusterToSector?T
00000026 1C20 MOV R0,R4 ; fs
00000028 6800 LDR R0,[R0,#0x0] ; fs
ARM COMPILER V2.42, dir 27/03/06 10:45:48 PAGE 16
0000002A 2201 MOV R2,#0x1
0000002C F7FF BL part_getSect?T ; T=0x0001 (1)
0000002E FFE8 BL part_getSect?T ; T=0x0001 (2)
00000030 9001 STR R0,[R13,#0x4] ; buf
233: if((fclus=dir_findinBuf(buf,fatname,loc,mode))){
00000032 A803 ADD R0,R13,#0xC
00000034 7800 LDRB R0,[R0,#0x0] ; mode
00000036 1C03 MOV R3,R0
00000038 9801 LDR R0,[R13,#0x4] ; buf
0000003A 1C31 MOV R1,R6 ; fatname
0000003C 1C3A MOV R2,R7 ; loc
0000003E F7FF BL dir_findinBuf?T ; T=0x0001 (1)
00000040 FFDF BL dir_findinBuf?T ; T=0x0001 (2)
00000042 9002 STR R0,[R13,#0x8] ; fclus
00000044 2800 CMP R0,#0x0 ; dir_findinBuf?T
00000046 D012 BEQ L_29 ; T=0x0000006E
234: if(loc)loc->Sector=fs_clusterToSector(fs,cluster)+c;
00000048 1C38 MOV R0,R7 ; loc
0000004A 2800 CMP R0,#0x0 ; loc
0000004C D008 BEQ L_35 ; T=0x00000060
0000004E 1C20 MOV R0,R4 ; fs
00000050 1C29 MOV R1,R5 ; cluster
00000052 F7FF BL fs_clusterToSector?T ; T=0x0001 (1)
00000054 FFD5 BL fs_clusterToSector?T ; T=0x0001 (2)
00000056 A900 ADD R1,R13,#0x0
00000058 7809 LDRB R1,[R1,#0x0] ; c
0000005A 1841 ADD R1,R0,R1 ; fs_clusterToSector?T
0000005C 1C38 MOV R0,R7 ; loc
0000005E 6001 STR R1,[R0,#0x0] ; loc
00000060 L_35:
235: part_relSect(fs->part,buf);
00000060 1C20 MOV R0,R4 ; fs
00000062 6800 LDR R0,[R0,#0x0] ; fs
00000064 9901 LDR R1,[R13,#0x4] ; buf
00000066 F7FF BL part_relSect?T ; T=0x0001 (1)
00000068 FFCB BL part_relSect?T ; T=0x0001 (2)
236: return(fclus);
0000006A 9802 LDR R0,[R13,#0x8] ; fclus
0000006C E010 B L_36 ; T=0x00000090
238: }
0000006E L_29:
0000006E A800 ADD R0,R13,#0x0
00000070 7801 LDRB R1,[R0,#0x0] ; c
00000072 3101 ADD R1,#0x1
00000074 7001 STRB R1,[R0,#0x0] ; c
00000076 L_31:
00000076 1C20 MOV R0,R4 ; fs
00000078 7980 LDRB R0,[R0,#0x6]
0000007A 1C01 MOV R1,R0
0000007C A800 ADD R0,R13,#0x0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -