📄 ui.lst
字号:
00000094 B008 ADD R13,#0x20
00000096 BC70 POP {R4-R6}
00000098 BC08 POP {R3}
0000009A 4718 BX R3
0000009C ENDP ; 'rmfile?T'
*** CODE SEGMENT '?PR?mkdir?T?ui':
149: esint8 mkdir(FileSystem *fs,eint8* dirname)
00000000 B5F0 PUSH {R4-R7,LR}
00000002 1C0F MOV R7,R1 ; dirname
00000004 ---- Variable 'dirname' assigned to Register 'R7' ----
00000004 1C05 MOV R5,R0 ; fs
00000006 ---- Variable 'fs' assigned to Register 'R5' ----
00000006 B08E SUB R13,#0x38
150: {
00000008 ; SCOPE-START
157: if( fs_findFile(fs,dirname,&loc,&parentdir) ){
00000008 1C28 MOV R0,R5 ; fs
0000000A 1C39 MOV R1,R7 ; dirname
0000000C AC00 ADD R4,R13,#0x0
0000000E 1C22 MOV R2,R4
00000010 AB0A ADD R3,R13,#0x28
00000012 F7FF BL fs_findFile?T ; T=0x0001 (1)
ARM COMPILER V2.42, ui 27/03/06 10:45:52 PAGE 11
00000014 FFF5 BL fs_findFile?T ; T=0x0001 (2)
00000016 2800 CMP R0,#0x0 ; fs_findFile?T
00000018 D001 BEQ L_27 ; T=0x0000001E
158: return(-1);
0000001A 4800 LDR R0,=0xFFFFFFFF
0000001C E0CB B L_28 ; T=0x000001B6
159: }
0000001E L_27:
160: if(parentdir==0)return(-2);
0000001E 980A LDR R0,[R13,#0x28] ; parentdir
00000020 2800 CMP R0,#0x0
00000022 D101 BNE L_29 ; T=0x00000028
00000024 4800 LDR R0,=0xFFFFFFFE
00000026 E0C6 B L_28 ; T=0x000001B6
00000028 L_29:
162: if(!fs_findFreeFile(fs,dirname,&loc,0))return(-3);
00000028 1C28 MOV R0,R5 ; fs
0000002A 1C39 MOV R1,R7 ; dirname
0000002C 1C22 MOV R2,R4
0000002E 2300 MOV R3,#0x0
00000030 F7FF BL fs_findFreeFile?T ; T=0x0001 (1)
00000032 FFE6 BL fs_findFreeFile?T ; T=0x0001 (2)
00000034 0400 LSL R0,R0,#0x10 ; fs_findFreeFile?T
00000036 1400 ASR R0,R0,#0x10
00000038 2800 CMP R0,#0x0
0000003A D101 BNE L_30 ; T=0x00000040
0000003C 4800 LDR R0,=0xFFFFFFFD
0000003E E0BA B L_28 ; T=0x000001B6
00000040 L_30:
171: nc = fs_getNextFreeCluster(fs,fs_giveFreeClusterHint(fs));
00000040 1C28 MOV R0,R5 ; fs
00000042 F7FF BL fs_giveFreeClusterHint?T ; T=0x0001 (1)
00000044 FFDD BL fs_giveFreeClusterHint?T ; T=0x0001 (2)
00000046 1C01 MOV R1,R0
00000048 1C28 MOV R0,R5 ; fs
0000004A F7FF BL fs_getNextFreeCluster?T ; T=0x0001 (1)
0000004C FFD9 BL fs_getNextFreeCluster?T ; T=0x0001 (2)
0000004E 1C04 MOV R4,R0 ; nc
00000050 ---- Variable 'nc' assigned to Register 'R4' ----
172: if(nc==0)return(0);
00000050 1C20 MOV R0,R4 ; nc
00000052 2800 CMP R0,#0x0 ; nc
00000054 D101 BNE L_31 ; T=0x0000005A
00000056 2000 MOV R0,#0x0
00000058 E0AD B L_28 ; T=0x000001B6
0000005A L_31:
174: fs_clearCluster(fs,nc);
0000005A 1C28 MOV R0,R5 ; fs
0000005C 1C21 MOV R1,R4 ; nc
0000005E F7FF BL fs_clearCluster?T ; T=0x0001 (1)
00000060 FFCF BL fs_clearCluster?T ; T=0x0001 (2)
176: buf = part_getSect(fs->part,loc.Sector,IOM_MODE_READWRITE);
00000062 1C28 MOV R0,R5 ; fs
00000064 6800 LDR R0,[R0,#0x0] ; fs
00000066 9900 LDR R1,[R13,#0x0] ; loc
00000068 2202 MOV R2,#0x2
0000006A F7FF BL part_getSect?T ; T=0x0001 (1)
0000006C FFC9 BL part_getSect?T ; T=0x0001 (2)
0000006E 1C06 MOV R6,R0 ; buf
00000070 ---- Variable 'buf' assigned to Register 'R6' ----
178: dir_getFatFileName(dirname,ffname);
00000070 1C38 MOV R0,R7 ; dirname
00000072 A90B ADD R1,R13,#0x2C
00000074 F7FF BL dir_getFatFileName?T ; T=0x0001 (1)
00000076 FFC4 BL dir_getFatFileName?T ; T=0x0001 (2)
179: memClr(&direntry,sizeof(direntry));
ARM COMPILER V2.42, ui 27/03/06 10:45:52 PAGE 12
00000078 A802 ADD R0,R13,#0x8
0000007A 2120 MOV R1,#0x20
0000007C F7FF BL memClr?T ; T=0x0001 (1)
0000007E FFC0 BL memClr?T ; T=0x0001 (2)
180: memCpy(ffname,&direntry,11);
00000080 A80B ADD R0,R13,#0x2C
00000082 A902 ADD R1,R13,#0x8
00000084 220B MOV R2,#0xB
00000086 F7FF BL memCpy?T ; T=0x0001 (1)
00000088 FFBB BL memCpy?T ; T=0x0001 (2)
181: direntry.FileSize = 0;
0000008A 2000 MOV R0,#0x0
0000008C 9009 STR R0,[R13,#0x24] ; direntry
182: direntry.FirstClusterHigh=nc>>16;
0000008E 1C21 MOV R1,R4 ; nc
00000090 0C09 LSR R1,R1,#0x10 ; nc
00000092 0409 LSL R1,R1,#0x10
00000094 0C09 LSR R1,R1,#0x10
00000096 A807 ADD R0,R13,#0x1C
00000098 8001 STRH R1,[R0,#0x0] ; direntry+20
183: direntry.FirstClusterLow=nc&0xFFFF;
0000009A 1C21 MOV R1,R4 ; nc
0000009C 4800 LDR R0,=0xFFFF
0000009E 4001 AND R1,R0
000000A0 0409 LSL R1,R1,#0x10
000000A2 0C09 LSR R1,R1,#0x10
000000A4 2022 MOV R0,#0x22
000000A6 4468 ADD R0,R13
000000A8 8001 STRH R1,[R0,#0x0] ; direntry+26
184: direntry.Attribute = ATTR_DIRECTORY;
000000AA 2110 MOV R1,#0x10
000000AC 2013 MOV R0,#0x13
000000AE 4468 ADD R0,R13
000000B0 7001 STRB R1,[R0,#0x0] ; direntry+11
185: memCpy(&direntry,buf+(32*loc.Offset),32);
000000B2 A801 ADD R0,R13,#0x4
000000B4 7800 LDRB R0,[R0,#0x0] ; loc+4
000000B6 0140 LSL R0,R0,#0x5
000000B8 1C31 MOV R1,R6 ; buf
000000BA 1809 ADD R1,R0 ; buf
000000BC A802 ADD R0,R13,#0x8
000000BE 2220 MOV R2,#0x20
000000C0 F7FF BL memCpy?T ; T=0x0001 (1)
000000C2 FF9E BL memCpy?T ; T=0x0001 (2)
187: part_relSect(fs->part,buf);
000000C4 1C28 MOV R0,R5 ; fs
000000C6 6800 LDR R0,[R0,#0x0] ; fs
000000C8 1C31 MOV R1,R6 ; buf
000000CA F7FF BL part_relSect?T ; T=0x0001 (1)
000000CC FF99 BL part_relSect?T ; T=0x0001 (2)
189: buf = part_getSect(fs->part,fs_clusterToSector(fs,nc),IOM_MODE_READWRITE);
000000CE 1C28 MOV R0,R5 ; fs
000000D0 1C21 MOV R1,R4 ; nc
000000D2 F7FF BL fs_clusterToSector?T ; T=0x0001 (1)
000000D4 FF95 BL fs_clusterToSector?T ; T=0x0001 (2)
000000D6 1C01 MOV R1,R0
000000D8 1C28 MOV R0,R5 ; fs
000000DA 6800 LDR R0,[R0,#0x0] ; fs
000000DC 2202 MOV R2,#0x2
000000DE F7FF BL part_getSect?T ; T=0x0001 (1)
000000E0 FF8F BL part_getSect?T ; T=0x0001 (2)
000000E2 1C06 MOV R6,R0 ; buf
191: memClr(&direntry,sizeof(direntry));
000000E4 A802 ADD R0,R13,#0x8
000000E6 2120 MOV R1,#0x20
000000E8 F7FF BL memClr?T ; T=0x0001 (1)
ARM COMPILER V2.42, ui 27/03/06 10:45:52 PAGE 13
000000EA FF8A BL memClr?T ; T=0x0001 (2)
192: memCpy(". ",&direntry,11);
000000EC 4800 LDR R0,=??S_3 ; ??S_3
000000EE A902 ADD R1,R13,#0x8
000000F0 220B MOV R2,#0xB
000000F2 F7FF BL memCpy?T ; T=0x0001 (1)
000000F4 FF85 BL memCpy?T ; T=0x0001 (2)
193: direntry.Attribute = ATTR_DIRECTORY;
000000F6 2110 MOV R1,#0x10
000000F8 2013 MOV R0,#0x13
000000FA 4468 ADD R0,R13
000000FC 7001 STRB R1,[R0,#0x0] ; direntry+11
194: direntry.FileSize = 0;
000000FE 2000 MOV R0,#0x0
00000100 9009 STR R0,[R13,#0x24] ; direntry
195: direntry.FirstClusterHigh=nc>>16;
00000102 1C21 MOV R1,R4 ; nc
00000104 0C09 LSR R1,R1,#0x10 ; nc
00000106 0409 LSL R1,R1,#0x10
00000108 0C09 LSR R1,R1,#0x10
0000010A A807 ADD R0,R13,#0x1C
0000010C 8001 STRH R1,[R0,#0x0] ; direntry+20
196: direntry.FirstClusterLow=nc&0xFFFF;
0000010E 1C21 MOV R1,R4 ; nc
00000110 4800 LDR R0,=0xFFFF
00000112 4001 AND R1,R0
00000114 0409 LSL R1,R1,#0x10
00000116 0C09 LSR R1,R1,#0x10
00000118 2022 MOV R0,#0x22
0000011A 4468 ADD R0,R13
0000011C 8001 STRH R1,[R0,#0x0] ; direntry+26
197: memCpy(&direntry,buf,32);
0000011E A802 ADD R0,R13,#0x8
00000120 1C31 MOV R1,R6 ; buf
00000122 2220 MOV R2,#0x20
00000124 F7FF BL memCpy?T ; T=0x0001 (1)
00000126 FF6C BL memCpy?T ; T=0x0001 (2)
199: if(fs->type == FAT32 && parentdir == fs->volumeId.RootCluster){
00000128 1C28 MOV R0,R5 ; fs
0000012A 303C ADD R0,#0x3C
0000012C 7800 LDRB R0,[R0,#0x0]
0000012E 2803 CMP R0,#0x3
00000130 D106 BNE L_32 ; T=0x00000140
00000132 1C28 MOV R0,R5 ; fs
00000134 69C1 LDR R1,[R0,#0x1C]
00000136 980A LDR R0,[R13,#0x28] ; parentdir
00000138 4288 CMP R0,R1
0000013A D101 BNE L_32 ; T=0x00000140
200: parentdir = 0;
0000013C 2000 MOV R0,#0x0
0000013E 900A STR R0,[R13,#0x28] ; parentdir
201: }
00000140 L_32:
202: if(fs->type != FAT32 && parentdir<=1){
00000140 1C28 MOV R0,R5 ; fs
00000142 303C ADD R0,#0x3C
00000144 7800 LDRB R0,[R0,#0x0]
00000146 2803 CMP R0,#0x3
00000148 D004 BEQ L_33 ; T=0x00000154
0000014A 980A LDR R0,[R13,#0x28] ; parentdir
0000014C 2801 CMP R0,#0x1
0000014E D801 BHI L_33 ; T=0x00000154
203: parentdir = 0;
00000150 2000 MOV R0,#0x0
00000152 900A STR R0,[R13,#0x28] ; parentdir
204: }
ARM COMPILER V2.42, ui 27/03/06 10:45:52 PAGE 14
00000154 L_33:
206: memClr(&direntry,sizeof(direntry));
00000154 A802 ADD R0,R13,#0x8
00000156 2120 MOV R1,#0x20
00000158 F7FF BL memClr?T ; T=0x0001 (1)
0000015A FF52 BL memClr?T ; T=0x0001 (2)
207: memCpy(".. ",&direntry,11);
0000015C 4800 LDR R0,=??S_4 ; ??S_4
0000015E A902 ADD R1,R13,#0x8
00000160 220B MOV R2,#0xB
00000162 F7FF BL memCpy?T ; T=0x0001 (1)
00000164 FF4D BL memCpy?T ; T=0x0001 (2)
208: direntry.Attribute = ATTR_DIRECTORY;
00000166 2110 MOV R1,#0x10
00000168 2013 MOV R0,#0x13
0000016A 4468 ADD R0,R13
0000016C 7001 STRB R1,[R0,#0x0] ; direntry+11
209: direntry.FileSize = 0;
0000016E 2000 MOV R0,#0x0
00000170 9009 STR R0,[R13,#0x24] ; direntry
210: direntry.FirstClusterHigh=parentdir>>16;
00000172 990A LDR R1,[R13,#0x28] ; parentdir
00000174 0C09 LSR R1,R1,#0x10
00000176 0409 LSL R1,R1,#0x10
00000178 0C09 LSR R1,R1,#0x10
0000017A A807 ADD R0,R13,#0x1C
0000017C 8001 STRH R1,[R0,#0x0] ; direntry+20
211: direntry.FirstClusterLow=parentdir&0xFFFF;
0000017E 990A LDR R1,[R13,#0x28] ; parentdir
00000180 4800 LDR R0,=0xFFFF
00000182 4001 AND R1,R0
00000184 0409 LSL R1,R1,#0x10
00000186 0C09 LSR R1,R1,#0x10
00000188 2022 MOV R0,#0x22
0000018A 4468 ADD R0,R13
0000018C 8001 STRH R1,[R0,#0x0] ; direntry+26
212: memCpy(&direntry,buf+32,32);
0000018E A802 ADD R0,R13,#0x8
00000190 1C31 MOV R1,R6 ; buf
00000192 3120 ADD R1,#0x20
00000194 2220 MOV R2,#0x20
00000196 F7FF BL memCpy?T ; T=0x0001 (1)
00000198 FF33 BL memCpy?T ; T=0x0001 (2)
214: part_relSect(fs->part,buf);
0000019A 1C28 MOV R0,R5 ; fs
0000019C 6800 LDR R0,[R0,#0x0] ; fs
0000019E 1C31 MOV R1,R6 ; buf
000001A0 F7FF BL part_relSect?T ; T=0x0001 (1)
000001A2 FF2E BL part_relSect?T ; T=0x0001 (2)
216: fat_setNextClusterAddress(fs,nc,fat_giveEocMarker(fs));
000001A4 1C28 MOV R0,R5 ; fs
000001A6 F7FF BL fat_giveEocMarker?T ; T=0x0001 (1)
000001A8 FF2B BL fat_giveEocMarker?T ; T=0x0001 (2)
000001AA 1C02 MOV R2,R0
000001AC 1C28 MOV R0,R5 ; fs
000001AE 1C21 MOV R1,R4 ; nc
000001B0 F7FF BL fat_setNextClusterAddress?T ; T=0x0001 (1)
000001B2 FF26 BL fat_setNextClusterAddress?T ; T=0x0001 (2)
218: return(0);
000001B4 2000 MOV R0,#0x0
000001B6 ; SCOPE-END
219: }
000001B6 L_28:
000001B6 B00E ADD R13,#0x38
000001B8 BCF0 POP {R4-R7}
000001BA BC08 POP {R3}
ARM COMPILER V2.42, ui 27/03/06 10:45:52 PAGE 15
000001BC 4718 BX R3
000001BE ENDP ; 'mkdir?T'
Module Information Static
----------------------------------
code size = ------
data size = ------
const size = 80
End of Module Information.
ARM COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -