📄 ui.lst
字号:
00000028 2801 CMP R0,#0x1
0000002A D002 BEQ L_8 ; T=0x00000032
0000002C 2802 CMP R0,#0x2
0000002E D000 BNE $+4
00000030 E08C B L_9 ; T=0x0000014C
54: for(i=0;i<=(fs->volumeId.RootEntryCount/16);i++)
00000034 L_8:
00000034 2700 MOV R7,#0x0
00000036 ---- Variable 'i' assigned to Register 'R7' ----
00000036 E00E B L_6 ; T=0x00000056
00000038 L_7:
56: loc.Sector=fs->FirstSectorRootDir + i;
00000038 1C28 MOV R0,R5 ; fs
0000003A 6AC0 LDR R0,[R0,#0x2C]
0000003C 1C39 MOV R1,R7 ; i
0000003E 0409 LSL R1,R1,#0x10 ; i
00000040 0C09 LSR R1,R1,#0x10
00000042 1840 ADD R0,R1
00000044 9009 STR R0,[R13,#0x24] ; loc
57: part_readBuf(fs->part,loc.Sector,buf);
00000046 1C28 MOV R0,R5 ; fs
00000048 6800 LDR R0,[R0,#0x0] ; fs
0000004A 9909 LDR R1,[R13,#0x24] ; loc
0000004C AA0B ADD R2,R13,#0x2C
0000004E F7FF BL part_readBuf?T ; T=0x0001 (1)
00000050 FFD7 BL part_readBuf?T ; T=0x0001 (2)
60: }
00000052 3701 ADD R7,#0x1
00000054 043F LSL R7,R7,#0x10
00000056 0C3F LSR R7,R7,#0x10
00000058 L_6:
00000058 1C28 MOV R0,R5 ; fs
0000005A 8980 LDRH R0,[R0,#0xC]
0000005C 2110 MOV R1,#0x10
0000005E F7FF BL ?C?SDIV?T ; T=0x0001 (1) ; ?C?SDIV?T
00000060 FFCF BL ?C?SDIV?T ; T=0x0001 (2) ; ?C?SDIV?T
00000062 1C08 MOV R0,R1
00000064 1C39 MOV R1,R7 ; i
00000066 0409 LSL R1,R1,#0x10 ; i
00000068 0C09 LSR R1,R1,#0x10
0000006A 4281 CMP R1,R0
0000006C D9E4 BLS L_7 ; T=0x00000038
62: }
0000006E E06D B L_9 ; T=0x0000014C
00000070 L_1:
66: if(fs_findFile(fs,dirname,&loc,0)!=2)
00000070 1C28 MOV R0,R5 ; fs
00000072 1C31 MOV R1,R6 ; dirname
00000074 AA09 ADD R2,R13,#0x24
00000076 2300 MOV R3,#0x0
00000078 F7FF BL fs_findFile?T ; T=0x0001 (1)
0000007A FFC2 BL fs_findFile?T ; T=0x0001 (2)
0000007C 0600 LSL R0,R0,#0x18 ; fs_findFile?T
0000007E 1600 ASR R0,R0,#0x18
00000080 2802 CMP R0,#0x2
00000082 D000 BEQ L_10 ; T=0x00000086
69: return(-1);
00000084 4800 LDR R0,=0xFFFFFFFF
00000086 E063 B L_11 ; T=0x00000150
70: }
00000088 L_10:
73: part_readBuf(fs->part,loc.Sector, buf);
ARM COMPILER V2.42, ui 27/03/06 10:45:52 PAGE 7
00000088 1C28 MOV R0,R5 ; fs
0000008A 6800 LDR R0,[R0,#0x0] ; fs
0000008C 9909 LDR R1,[R13,#0x24] ; loc
0000008E AA0B ADD R2,R13,#0x2C
00000090 F7FF BL part_readBuf?T ; T=0x0001 (1)
00000092 FFB6 BL part_readBuf?T ; T=0x0001 (2)
74: fileEntry = *(((FileRecord*)buf) + loc.Offset);
00000094 A80A ADD R0,R13,#0x28
00000096 7800 LDRB R0,[R0,#0x0] ; loc+4
00000098 0140 LSL R0,R0,#0x5
0000009A A90B ADD R1,R13,#0x2C
0000009C 1809 ADD R1,R0 ; buf
0000009E A801 ADD R0,R13,#0x4
000000A0 2208 MOV R2,#0x8
000000A2 L_36:
000000A2 C908 LDMIA R1!,{R3}
000000A4 C008 STMIA R0!,{R3}
000000A6 1E52 SUB R2,R2,#0x1
000000A8 D1FB BNE L_36 ; T=0x000000A2
75: startCluster = (((unsigned long)fileEntry.FirstClusterHigh)<<16)
000000AA A806 ADD R0,R13,#0x18
000000AC 8800 LDRH R0,[R0,#0x0] ; fileEntry+20
000000AE 1C01 MOV R1,R0
000000B0 0409 LSL R1,R1,#0x10
000000B2 201E MOV R0,#0x1E
000000B4 4468 ADD R0,R13
000000B6 8800 LDRH R0,[R0,#0x0] ; fileEntry+26
000000B8 1809 ADD R1,R0
000000BA ---- Variable 'startCluster' assigned to Register 'R1' ----
79: dir.fs=fs;
000000BA 1C28 MOV R0,R5 ; fs
000000BC 9095 STR R0,[R13,#0x254] ; dir
80: dir.Cache.LogicCluster=-1;
000000BE 4800 LDR R0,=0xFFFFFFFF
000000C0 9097 STR R0,[R13,#0x25C] ; dir
81: dir.Cache.FirstCluster=startCluster;
000000C2 1C08 MOV R0,R1 ; startCluster
000000C4 9099 STR R0,[R13,#0x264] ; dir
82: dir.DirEntry.Attribute=ATTR_DIRECTORY;
000000C6 2110 MOV R1,#0x10
000000C8 4800 LDR R0,=0x237
000000CA 4468 ADD R0,R13
000000CC 7001 STRB R1,[R0,#0x0] ; dir+11
84: while((file_fread(&dir,offset,512,buf)))
000000CE E035 B L_12 ; T=0x0000013C
000000D0 L_14:
86: DBG((TXT("Read 512 bytes from dir with offset %li.\n"),offset));
000000D0 4800 LDR R0,=??S_1 ; ??S_1
000000D2 1C21 MOV R1,R4 ; offset
000000D4 F7FF BL lpc2000_debug_printf?T ; T=0x0001 (1)
000000D6 FF94 BL lpc2000_debug_printf?T ; T=0x0001 (2)
87: for(fileEntryCount=0;fileEntryCount<16;fileEntryCount++)
000000D8 2500 MOV R5,#0x0
000000DA ---- Variable 'fileEntryCount' assigned to Register 'R5' ----
000000DA E028 B L_18 ; T=0x0000012E
000000DC L_19:
89: fileEntry = *(((FileRecord*)buf) + fileEntryCount);
000000DC 1C28 MOV R0,R5 ; fileEntryCount
000000DE 0600 LSL R0,R0,#0x18 ; fileEntryCount
000000E0 0E00 LSR R0,R0,#0x18
000000E2 0140 LSL R0,R0,#0x5
000000E4 A90B ADD R1,R13,#0x2C
000000E6 1809 ADD R1,R0 ; buf
000000E8 A801 ADD R0,R13,#0x4
000000EA 2208 MOV R2,#0x8
000000EC L_37:
ARM COMPILER V2.42, ui 27/03/06 10:45:52 PAGE 8
000000EC C908 LDMIA R1!,{R3}
000000EE C008 STMIA R0!,{R3}
000000F0 1E52 SUB R2,R2,#0x1
000000F2 D1FB BNE L_37 ; T=0x000000EC
90: if( !( (fileEntry.Attribute & 0x0F) == 0x0F ) )
000000F4 200F MOV R0,#0xF
000000F6 4468 ADD R0,R13
000000F8 7800 LDRB R0,[R0,#0x0] ; fileEntry+11
000000FA 210F MOV R1,#0xF
000000FC 4008 AND R0,R1
000000FE 280F CMP R0,#0xF
00000100 D012 BEQ L_16 ; T=0x00000128
92: if
00000102 A901 ADD R1,R13,#0x4
00000104 7808 LDRB R0,[R1,#0x0] ; fileEntry
00000106 2841 CMP R0,#0x41
00000108 DB01 BLT L_24 ; T=0x0000010E
0000010A 7808 LDRB R0,[R1,#0x0] ; fileEntry
0000010C 285A CMP R0,#0x5A
0000010E DD04 BLE L_23 ; T=0x0000011A
00000110 L_24:
00000110 7808 LDRB R0,[R1,#0x0] ; fileEntry
00000112 2830 CMP R0,#0x30
00000114 DB08 BLT L_16 ; T=0x00000128
00000116 7808 LDRB R0,[R1,#0x0] ; fileEntry
00000118 2839 CMP R0,#0x39
0000011A DC05 BGT L_16 ; T=0x00000128
0000011C L_23:
99: DBG((TXT("Filename: %s\n"),fileEntry.FileName));
0000011C 4800 LDR R0,=??S_2 ; ??S_2
0000011E F7FF BL lpc2000_debug_printf?T ; T=0x0001 (1)
00000120 FF6F BL lpc2000_debug_printf?T ; T=0x0001 (2)
100: counter++;
00000122 A800 ADD R0,R13,#0x0
00000124 8801 LDRH R1,[R0,#0x0] ; counter
00000126 3101 ADD R1,#0x1
00000128 8001 STRH R1,[R0,#0x0] ; counter
103: }
0000012A L_16:
0000012A 3501 ADD R5,#0x1
0000012C 062D LSL R5,R5,#0x18
0000012E 0E2D LSR R5,R5,#0x18
00000130 L_18:
00000130 1C28 MOV R0,R5 ; fileEntryCount
00000132 0600 LSL R0,R0,#0x18 ; fileEntryCount
00000134 0E00 LSR R0,R0,#0x18
00000136 2810 CMP R0,#0x10
00000138 DBD0 BLT L_19 ; T=0x000000DC
104: offset+=512;
0000013A 4880 LDR R0,=0x200
0000013C 1824 ADD R4,R0 ; offset
105: }
0000013E L_12:
0000013E A88B ADD R0,R13,#0x22C
00000140 1C21 MOV R1,R4 ; offset
00000142 AB0B ADD R3,R13,#0x2C
00000144 4A80 LDR R2,=0x200
00000146 F7FF BL file_fread?T ; T=0x0001 (1)
00000148 FF5B BL file_fread?T ; T=0x0001 (2)
0000014A 2800 CMP R0,#0x0 ; file_fread?T
0000014C D1C0 BNE L_14 ; T=0x000000D0
106: }
0000014E L_9:
109: return(counter);
0000014E A800 ADD R0,R13,#0x0
00000150 8800 LDRH R0,[R0,#0x0] ; counter
ARM COMPILER V2.42, ui 27/03/06 10:45:52 PAGE 9
111: return(-1);
00000152 ; SCOPE-END
112: }
00000152 L_11:
00000152 499F LDR R1,=0x27C
00000154 448D ADD R13,R13,R1
00000156 BCF0 POP {R4-R7}
00000158 BC08 POP {R3}
0000015A 4718 BX R3
0000015C ENDP ; 'listFiles?T'
*** CODE SEGMENT '?PR?rmfile?T?ui':
121: esint16 rmfile(FileSystem *fs,euint8* filename)
00000000 B570 PUSH {R4-R6,LR}
00000002 1C0A MOV R2,R1 ; filename
00000004 ---- Variable 'filename' assigned to Register 'R2' ----
00000004 1C04 MOV R4,R0 ; fs
00000006 ---- Variable 'fs' assigned to Register 'R4' ----
00000006 B088 SUB R13,#0x20
122: {
00000008 ; SCOPE-START
126: euint32 firstCluster=0;
00000008 2500 MOV R5,#0x0
0000000A ---- Variable 'firstCluster' assigned to Register 'R5' ----
128: if((fs_findFile(fs,(eint8*)filename,&loc,0))==1){
0000000A 1C20 MOV R0,R4 ; fs
0000000C 1C11 MOV R1,R2 ; filename
0000000E AA00 ADD R2,R13,#0x0
00000010 2300 MOV R3,#0x0
00000012 F7FF BL fs_findFile?T ; T=0x0001 (1)
00000014 FFF5 BL fs_findFile?T ; T=0x0001 (2)
00000016 0600 LSL R0,R0,#0x18 ; fs_findFile?T
00000018 1600 ASR R0,R0,#0x18
0000001A 2801 CMP R0,#0x1
0000001C D139 BNE L_25 ; T=0x00000092
129: buf=part_getSect(fs->part,loc.Sector,IOM_MODE_READWRITE);
0000001E 1C20 MOV R0,R4 ; fs
00000020 6800 LDR R0,[R0,#0x0] ; fs
00000022 9900 LDR R1,[R13,#0x0] ; loc
00000024 2202 MOV R2,#0x2
00000026 F7FF BL part_getSect?T ; T=0x0001 (1)
00000028 FFEB BL part_getSect?T ; T=0x0001 (2)
0000002A 1C06 MOV R6,R0 ; buf
0000002C ---- Variable 'buf' assigned to Register 'R6' ----
130: firstCluster = ex_getb16(buf,loc.Offset*32+20);
0000002C A801 ADD R0,R13,#0x4
0000002E 7800 LDRB R0,[R0,#0x0] ; loc+4
00000030 1C01 MOV R1,R0
00000032 0149 LSL R1,R1,#0x5
00000034 3114 ADD R1,#0x14
00000036 1C30 MOV R0,R6 ; buf
00000038 F7FF BL ex_getb16?T ; T=0x0001 (1)
0000003A FFE2 BL ex_getb16?T ; T=0x0001 (2)
0000003C 0405 LSL R5,R0,#0x10 ; ex_getb16?T
0000003E 0C2D LSR R5,R5,#0x10
131: firstCluster <<= 16;
00000040 042D LSL R5,R5,#0x10 ; firstCluster
132: firstCluster += ex_getb16(buf,loc.Offset*32+26);
00000042 A801 ADD R0,R13,#0x4
00000044 7800 LDRB R0,[R0,#0x0] ; loc+4
00000046 1C01 MOV R1,R0
00000048 0149 LSL R1,R1,#0x5
0000004A 311A ADD R1,#0x1A
0000004C 1C30 MOV R0,R6 ; buf
0000004E F7FF BL ex_getb16?T ; T=0x0001 (1)
00000050 FFD7 BL ex_getb16?T ; T=0x0001 (2)
00000052 0400 LSL R0,R0,#0x10 ; ex_getb16?T
ARM COMPILER V2.42, ui 27/03/06 10:45:52 PAGE 10
00000054 0C00 LSR R0,R0,#0x10
00000056 182D ADD R5,R0 ; firstCluster
138: *(buf+(loc.Offset*32)+0) = 0xE5; /* Mark file deleted */
00000058 20E5 MOV R0,#0xE5
0000005A A901 ADD R1,R13,#0x4
0000005C 7809 LDRB R1,[R1,#0x0] ; loc+4
0000005E 1C0A MOV R2,R1
00000060 0152 LSL R2,R2,#0x5
00000062 1C31 MOV R1,R6 ; buf
00000064 5488 STRB R0,[R1,R2]
139: part_relSect(fs->part,buf);
00000066 1C20 MOV R0,R4 ; fs
00000068 6800 LDR R0,[R0,#0x0] ; fs
0000006A 1C31 MOV R1,R6 ; buf
0000006C F7FF BL part_relSect?T ; T=0x0001 (1)
0000006E FFC8 BL part_relSect?T ; T=0x0001 (2)
140: cache.DiscCluster = cache.LastCluster = cache.Linear = cache.LogicCluster = 0;
00000070 2000 MOV R0,#0x0
00000072 9003 STR R0,[R13,#0xC] ; cache
00000074 2100 MOV R1,#0x0
00000076 A802 ADD R0,R13,#0x8
00000078 7001 STRB R1,[R0,#0x0] ; cache
0000007A 2000 MOV R0,#0x0
0000007C 9006 STR R0,[R13,#0x18] ; cache
0000007E 2000 MOV R0,#0x0
00000080 9004 STR R0,[R13,#0x10] ; cache
141: cache.FirstCluster = firstCluster;
00000082 1C28 MOV R0,R5 ; firstCluster
00000084 9005 STR R0,[R13,#0x14] ; cache
142: fat_unlinkClusterChain(fs,&cache);
00000086 1C20 MOV R0,R4 ; fs
00000088 A902 ADD R1,R13,#0x8
0000008A F7FF BL fat_unlinkClusterChain?T ; T=0x0001 (1)
0000008C FFB9 BL fat_unlinkClusterChain?T ; T=0x0001 (2)
143: return(0);
0000008E 2000 MOV R0,#0x0
00000090 E000 B L_26 ; T=0x00000094
144: }
00000092 L_25:
145: return(-1);
00000092 4800 LDR R0,=0xFFFFFFFF
00000094 ; SCOPE-END
146: }
00000094 L_26:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -