📄 file.lst
字号:
000000C8 0409 LSL R1,R1,#0x10
000000CA 0C09 LSR R1,R1,#0x10
000000CC A804 ADD R0,R13,#0x10
000000CE 8001 STRH R1,[R0,#0x0] ; btr
174: }else{
000000D0 E002 B L_35 ; T=0x000000D8
000000D2 L_31:
175: btr = 512;
000000D2 4980 LDRH R1,=0x200
000000D4 A804 ADD R0,R13,#0x10
000000D6 8001 STRH R1,[R0,#0x0] ; btr
176: }
000000D8 L_35:
178: if((fat_LogicToDiscCluster(file->fs,&(file->Cache),cclus))!=0){
000000D8 1C20 MOV R0,R4 ; file
ARM COMPILER V2.42, file 27/03/06 10:45:50 PAGE 17
000000DA 6A80 LDR R0,[R0,#0x28]
000000DC 1C21 MOV R1,R4 ; file
000000DE 312C ADD R1,#0x2C
000000E0 1C1A MOV R2,R3 ; cclus
000000E2 F7FF BL fat_LogicToDiscCluster?T ; T=0x0001 (1)
000000E4 FF8D BL fat_LogicToDiscCluster?T ; T=0x0001 (2)
000000E6 0400 LSL R0,R0,#0x10 ; fat_LogicToDiscCluster?T
000000E8 1400 ASR R0,R0,#0x10
000000EA 2800 CMP R0,#0x0
000000EC D00F BEQ L_36 ; T=0x0000010E
179: file->FileSize+=bytes_written;
000000EE 9A02 LDR R2,[R13,#0x8] ; bytes_written
000000F0 1C20 MOV R0,R4 ; file
000000F2 6CC1 LDR R1,[R0,#0x4C]
000000F4 1889 ADD R1,R2
000000F6 1C20 MOV R0,R4 ; file
000000F8 64C1 STR R1,[R0,#0x4C]
180: dir_setFileSize(file->fs,&(file->Location),file->FileSize);
000000FA 1C20 MOV R0,R4 ; file
000000FC 6A80 LDR R0,[R0,#0x28]
000000FE 1C21 MOV R1,R4 ; file
00000100 6CCA LDR R2,[R1,#0x4C]
00000102 1C21 MOV R1,R4 ; file
00000104 3120 ADD R1,#0x20
00000106 F7FF BL dir_setFileSize?T ; T=0x0001 (1)
00000108 FF7B BL dir_setFileSize?T ; T=0x0001 (2)
181: return(bytes_written);
0000010A 9802 LDR R0,[R13,#0x8] ; bytes_written
0000010C E050 B L_23 ; T=0x000001B0
182: }
0000010E L_36:
183: rclus=file->Cache.DiscCluster;
0000010E 1C20 MOV R0,R4 ; file
00000110 6B47 LDR R7,[R0,#0x34]
00000112 ---- Variable 'rclus' assigned to Register 'R7' ----
184: rsec=fs_clusterToSector(file->fs,rclus);
00000112 1C20 MOV R0,R4 ; file
00000114 6A80 LDR R0,[R0,#0x28]
00000116 1C39 MOV R1,R7 ; rclus
00000118 F7FF BL fs_clusterToSector?T ; T=0x0001 (1)
0000011A FF72 BL fs_clusterToSector?T ; T=0x0001 (2)
0000011C 1C07 MOV R7,R0 ; rsec
0000011E ---- Variable 'rsec' assigned to Register 'R7' ----
186: if(btr==512){
0000011E A804 ADD R0,R13,#0x10
00000120 8800 LDRH R0,[R0,#0x0] ; btr
00000122 4980 LDR R1,=0x200
00000124 4288 CMP R0,R1
00000126 D10B BNE L_37 ; T=0x00000140
188: part_directSectorWrite(file->fs->part,rsec+csec,buf+bytes_written);
00000128 1C20 MOV R0,R4 ; file
0000012A 6A80 LDR R0,[R0,#0x28]
0000012C 6800 LDR R0,[R0,#0x0]
0000012E 9A00 LDR R2,[R13,#0x0] ; csec
00000130 1C39 MOV R1,R7 ; rsec
00000132 1889 ADD R1,R2 ; rsec
00000134 9B02 LDR R3,[R13,#0x8] ; bytes_written
00000136 1C32 MOV R2,R6 ; buf
00000138 18D2 ADD R2,R3 ; buf
0000013A F7FF BL part_directSectorWrite?T ; T=0x0001 (1)
0000013C FF61 BL part_directSectorWrite?T ; T=0x0001 (2)
189: }else{
0000013E E01B B L_38 ; T=0x00000178
00000140 L_37:
191: tbuf = part_getSect(file->fs->part,rsec+csec,IOM_MODE_READWRITE);
00000140 1C20 MOV R0,R4 ; file
ARM COMPILER V2.42, file 27/03/06 10:45:50 PAGE 18
00000142 6A80 LDR R0,[R0,#0x28]
00000144 6800 LDR R0,[R0,#0x0]
00000146 9A00 LDR R2,[R13,#0x0] ; csec
00000148 1C39 MOV R1,R7 ; rsec
0000014A 1889 ADD R1,R2 ; rsec
0000014C 2202 MOV R2,#0x2
0000014E F7FF BL part_getSect?T ; T=0x0001 (1)
00000150 FF57 BL part_getSect?T ; T=0x0001 (2)
00000152 1C07 MOV R7,R0 ; tbuf
00000154 ---- Variable 'tbuf' assigned to Register 'R7' ----
192: memCpy(buf+bytes_written,tbuf+(coffset%512),btr);
00000154 9803 LDR R0,[R13,#0xC] ; coffset
00000156 4800 LDR R1,=0x1FF
00000158 4008 AND R0,R1
0000015A 1C39 MOV R1,R7 ; tbuf
0000015C 1809 ADD R1,R0 ; tbuf
0000015E 9A02 LDR R2,[R13,#0x8] ; bytes_written
00000160 1C30 MOV R0,R6 ; buf
00000162 1880 ADD R0,R2 ; buf
00000164 AA04 ADD R2,R13,#0x10
00000166 8812 LDRH R2,[R2,#0x0] ; btr
00000168 F7FF BL memCpy?T ; T=0x0001 (1)
0000016A FF4A BL memCpy?T ; T=0x0001 (2)
194: part_relSect(file->fs->part,tbuf);
0000016C 1C20 MOV R0,R4 ; file
0000016E 6A80 LDR R0,[R0,#0x28]
00000170 6800 LDR R0,[R0,#0x0]
00000172 1C39 MOV R1,R7 ; tbuf
00000174 F7FF BL part_relSect?T ; T=0x0001 (1)
00000176 FF44 BL part_relSect?T ; T=0x0001 (2)
195: }
00000178 L_38:
197: coffset+=btr;
00000178 A804 ADD R0,R13,#0x10
0000017A 8800 LDRH R0,[R0,#0x0] ; btr
0000017C 1C01 MOV R1,R0
0000017E 9803 LDR R0,[R13,#0xC] ; coffset
00000180 1840 ADD R0,R1
00000182 9003 STR R0,[R13,#0xC] ; coffset
198: bytes_written+=btr;
00000184 9802 LDR R0,[R13,#0x8] ; bytes_written
00000186 1840 ADD R0,R1
00000188 9002 STR R0,[R13,#0x8] ; bytes_written
199: size_left-=btr;
0000018A 9801 LDR R0,[R13,#0x4] ; size_left
0000018C 1A40 SUB R0,R1
0000018E 9001 STR R0,[R13,#0x4] ; size_left
200: }
00000190 L_27:
00000190 9801 LDR R0,[R13,#0x4] ; size_left
00000192 2800 CMP R0,#0x0
00000194 D900 BHI $+4
00000196 E76F B L_29 ; T=0x00000078
202: if(bytes_written>file->FileSize-offset){
0000019A 1C20 MOV R0,R4 ; file
0000019C 6CC1 LDR R1,[R0,#0x4C]
0000019E 1C28 MOV R0,R5 ; offset
000001A0 1A0A SUB R2,R1,R0 ; offset
000001A2 9802 LDR R0,[R13,#0x8] ; bytes_written
000001A4 4290 CMP R0,R2
000001A6 D902 BLS L_39 ; T=0x000001AE
203: file->FileSize+=bytes_written-(file->FileSize-offset);
000001A8 1A80 SUB R0,R2
000001AA 1809 ADD R1,R0
000001AC 1C20 MOV R0,R4 ; file
000001AE 64C1 STR R1,[R0,#0x4C]
ARM COMPILER V2.42, file 27/03/06 10:45:50 PAGE 19
204: }
000001B0 L_39:
206: return(bytes_written);
000001B0 9802 LDR R0,[R13,#0x8] ; bytes_written
000001B2 ; SCOPE-END
207: }
000001B2 L_23:
000001B2 B005 ADD R13,#0x14
000001B4 BCF0 POP {R4-R7}
000001B6 BC08 POP {R3}
000001B8 4718 BX R3
000001BA ENDP ; 'file_fwrite?T'
*** CODE SEGMENT '?PR?file_fopen?T?file':
215: esint8 file_fopen(File* file,FileSystem *fs,eint8* filename,eint8 mode)
00000000 B5F0 PUSH {R4-R7,LR}
00000002 1C1F MOV R7,R3 ; mode
00000004 ---- Variable 'mode' assigned to Register 'R7' ----
00000004 1C16 MOV R6,R2 ; filename
00000006 ---- Variable 'filename' assigned to Register 'R6' ----
00000006 1C0D MOV R5,R1 ; fs
00000008 ---- Variable 'fs' assigned to Register 'R5' ----
00000008 1C04 MOV R4,R0 ; file
0000000A ---- Variable 'file' assigned to Register 'R4' ----
0000000A B08E SUB R13,#0x38
216: {
0000000C ; SCOPE-START
222: dir_getFatFileName(filename,fatfilename);
0000000C 1C30 MOV R0,R6 ; filename
0000000E A90A ADD R1,R13,#0x28
00000010 F7FF BL dir_getFatFileName?T ; T=0x0001 (1)
00000012 FFF6 BL dir_getFatFileName?T ; T=0x0001 (2)
224: switch(mode)
00000014 1C38 MOV R0,R7 ; mode
00000016 2861 CMP R0,#0x61 ; mode
00000018 D07F BEQ L_41 ; T=0x0000011A
0000001A 2877 CMP R0,#0x77 ; mode
0000001C D025 BEQ L_44 ; T=0x0000006A
0000001E 2872 CMP R0,#0x72 ; mode
00000020 D000 BNE $+4
00000022 E114 B L_42 ; T=0x0000024E
226: case MODE_READ:
00000026 L_43:
227: if(fs_findFile(fs,filename,&loc,0)==1)
00000026 1C28 MOV R0,R5 ; fs
00000028 1C31 MOV R1,R6 ; filename
0000002A AA00 ADD R2,R13,#0x0
0000002C 2300 MOV R3,#0x0
0000002E F7FF BL fs_findFile?T ; T=0x0001 (1)
00000030 FFE7 BL fs_findFile?T ; T=0x0001 (2)
00000032 0600 LSL R0,R0,#0x18 ; fs_findFile?T
00000034 1600 ASR R0,R0,#0x18
00000036 2801 CMP R0,#0x1
00000038 D115 BNE L_45 ; T=0x00000066
229: dir_getFileStructure(fs,&(file->DirEntry), &loc);
0000003A 1C28 MOV R0,R5 ; fs
0000003C 1C21 MOV R1,R4 ; file
0000003E AF00 ADD R7,R13,#0x0
00000040 1C3A MOV R2,R7
00000042 F7FF BL dir_getFileStructure?T ; T=0x0001 (1)
00000044 FFDD BL dir_getFileStructure?T ; T=0x0001 (2)
230: file_initFile(file,fs,&loc);
00000046 1C20 MOV R0,R4 ; file
00000048 1C29 MOV R1,R5 ; fs
0000004A 1C3A MOV R2,R7
0000004C F7FF BL file_initFile?T ; T=0x0001 (1)
0000004E FFD8 BL file_initFile?T ; T=0x0001 (2)
ARM COMPILER V2.42, file 27/03/06 10:45:50 PAGE 20
231: file_setAttr(file,FILE_STATUS_OPEN,1);
00000050 1C20 MOV R0,R4 ; file
00000052 2100 MOV R1,#0x0
00000054 2201 MOV R2,#0x1
00000056 F7FF BL file_setAttr?T ; T=0x0001 (1)
00000058 FFD3 BL file_setAttr?T ; T=0x0001 (2)
232: file_setAttr(file,FILE_STATUS_WRITE,0);
0000005A 1C20 MOV R0,R4 ; file
0000005C 2101 MOV R1,#0x1
0000005E 2200 MOV R2,#0x0
00000060 F7FF BL file_setAttr?T ; T=0x0001 (1)
00000062 FFCE BL file_setAttr?T ; T=0x0001 (2)
233: return(0);
00000064 2000 MOV R0,#0x0
00000066 E0F3 B L_46 ; T=0x00000250
234: }
00000068 L_45:
235: return(-1);
00000068 4800 LDR R0,=0xFFFFFFFF
0000006A E0F1 B L_46 ; T=0x00000250
237: case MODE_WRITE:
0000006C L_44:
238: if(fs_findFile(fs,filename,&loc,0))
0000006C 1C28 MOV R0,R5 ; fs
0000006E 1C31 MOV R1,R6 ; filename
00000070 AA00 ADD R2,R13,#0x0
00000072 2300 MOV R3,#0x0
00000074 F7FF BL fs_findFile?T ; T=0x0001 (1)
00000076 FFC4 BL fs_findFile?T ; T=0x0001 (2)
00000078 2800 CMP R0,#0x0 ; fs_findFile?T
0000007A D000 BEQ L_47 ; T=0x0000007E
240: return(-2);
0000007C 4800 LDR R0,=0xFFFFFFFE
0000007E E0E7 B L_46 ; T=0x00000250
241: }
00000080 L_47:
242: if(fs_findFreeFile(fs,filename,&loc,0))
00000080 1C28 MO
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -