📄 dir.lst
字号:
00000016 1C21 MOV R1,R4 ; filerec
00000018 7308 STRB R0,[R1,#0xC]
72: filerec->MilliSecTimeStamp=0x00;
0000001A 2000 MOV R0,#0x0
0000001C 1C21 MOV R1,R4 ; filerec
0000001E 7348 STRB R0,[R1,#0xD]
73: filerec->CreatedTime=time_getTime();
00000020 2000 MOV R0,#0x0
00000022 1C21 MOV R1,R4 ; filerec
00000024 81C8 STRH R0,[R1,#0xE]
74: filerec->CreatedDate=time_getDate();
00000026 2000 MOV R0,#0x0
00000028 1C21 MOV R1,R4 ; filerec
0000002A 8208 STRH R0,[R1,#0x10]
75: filerec->AccessDate=filerec->CreatedDate;
0000002C 1C20 MOV R0,R4 ; filerec
0000002E 8A00 LDRH R0,[R0,#0x10]
00000030 1C21 MOV R1,R4 ; filerec
00000032 8248 STRH R0,[R1,#0x12]
76: filerec->FirstClusterHigh=0x0000;
00000034 2000 MOV R0,#0x0
00000036 1C21 MOV R1,R4 ; filerec
00000038 8288 STRH R0,[R1,#0x14]
77: filerec->WriteTime=filerec->CreatedTime;
0000003A 1C20 MOV R0,R4 ; filerec
0000003C 89C0 LDRH R0,[R0,#0xE]
0000003E 1C21 MOV R1,R4 ; filerec
00000040 82C8 STRH R0,[R1,#0x16]
78: filerec->WriteDate=filerec->CreatedDate;
00000042 1C20 MOV R0,R4 ; filerec
00000044 8A00 LDRH R0,[R0,#0x10]
00000046 1C21 MOV R1,R4 ; filerec
00000048 8308 STRH R0,[R1,#0x18]
79: filerec->FirstClusterLow=0x0000;
0000004A 2000 MOV R0,#0x0
0000004C 1C21 MOV R1,R4 ; filerec
0000004E 8348 STRH R0,[R1,#0x1A]
80: filerec->FileSize=0x00000000;
00000050 2000 MOV R0,#0x0
00000052 1C21 MOV R1,R4 ; filerec
00000054 61C8 STR R0,[R1,#0x1C]
81: }
00000056 BC10 POP {R4}
00000058 BC08 POP {R3}
0000005A 4718 BX R3
0000005C ENDP ; 'dir_createDefaultEntry?T'
*** CODE SEGMENT '?PR?dir_setFirstCluster?T?dir':
90: void dir_setFirstCluster(FileSystem *fs,FileLocation *loc,euint32 cluster_addr)
00000000 B570 PUSH {R4-R6,LR}
00000002 1C16 MOV R6,R2 ; cluster_addr
00000004 ---- Variable 'cluster_addr' assigned to Register 'R6' ----
00000004 1C0D MOV R5,R1 ; loc
00000006 ---- Variable 'loc' assigned to Register 'R5' ----
00000006 1C04 MOV R4,R0 ; fs
00000008 ---- Variable 'fs' assigned to Register 'R4' ----
91: {
ARM COMPILER V2.42, dir 27/03/06 10:45:48 PAGE 10
00000008 ; SCOPE-START
94: buf = part_getSect(fs->part,loc->Sector,IOM_MODE_READWRITE);
00000008 1C20 MOV R0,R4 ; fs
0000000A 6800 LDR R0,[R0,#0x0] ; fs
0000000C 1C29 MOV R1,R5 ; loc
0000000E 6809 LDR R1,[R1,#0x0] ; loc
00000010 2202 MOV R2,#0x2
00000012 F7FF BL part_getSect?T ; T=0x0001 (1)
00000014 FFF5 BL part_getSect?T ; T=0x0001 (2)
00000016 1C03 MOV R3,R0 ; buf
00000018 ---- Variable 'buf' assigned to Register 'R3' ----
95: (((FileRecord*)buf)+loc->Offset)->FirstClusterHigh=cluster_addr>>16;
00000018 1C30 MOV R0,R6 ; cluster_addr
0000001A 0C00 LSR R0,R0,#0x10 ; cluster_addr
0000001C 0400 LSL R0,R0,#0x10
0000001E 0C00 LSR R0,R0,#0x10
00000020 1C29 MOV R1,R5 ; loc
00000022 7909 LDRB R1,[R1,#0x4]
00000024 1C0A MOV R2,R1
00000026 0152 LSL R2,R2,#0x5
00000028 1C19 MOV R1,R3 ; buf
0000002A 1889 ADD R1,R2 ; buf
0000002C 8288 STRH R0,[R1,#0x14]
96: (((FileRecord*)buf)+loc->Offset)->FirstClusterLow=cluster_addr&0xFFFF;
0000002E 1C30 MOV R0,R6 ; cluster_addr
00000030 4800 LDR R1,=0xFFFF
00000032 4008 AND R0,R1
00000034 0400 LSL R0,R0,#0x10
00000036 0C00 LSR R0,R0,#0x10
00000038 1C29 MOV R1,R5 ; loc
0000003A 7909 LDRB R1,[R1,#0x4]
0000003C 1C0A MOV R2,R1
0000003E 0152 LSL R2,R2,#0x5
00000040 1C19 MOV R1,R3 ; buf
00000042 1889 ADD R1,R2 ; buf
00000044 8348 STRH R0,[R1,#0x1A]
97: part_relSect(fs->part,buf);
00000046 1C20 MOV R0,R4 ; fs
00000048 6800 LDR R0,[R0,#0x0] ; fs
0000004A 1C19 MOV R1,R3 ; buf
0000004C F7FF BL part_relSect?T ; T=0x0001 (1)
0000004E FFD8 BL part_relSect?T ; T=0x0001 (2)
00000050 ; SCOPE-END
98: }
00000050 BC70 POP {R4-R6}
00000052 BC08 POP {R3}
00000054 4718 BX R3
00000056 ENDP ; 'dir_setFirstCluster?T'
*** CODE SEGMENT '?PR?dir_setFileSize?T?dir':
107: void dir_setFileSize(FileSystem *fs, FileLocation *loc,euint32 numbytes)
00000000 B570 PUSH {R4-R6,LR}
00000002 1C16 MOV R6,R2 ; numbytes
00000004 ---- Variable 'numbytes' assigned to Register 'R6' ----
00000004 1C0D MOV R5,R1 ; loc
00000006 ---- Variable 'loc' assigned to Register 'R5' ----
00000006 1C04 MOV R4,R0 ; fs
00000008 ---- Variable 'fs' assigned to Register 'R4' ----
108: {
00000008 ; SCOPE-START
111: buf = part_getSect(fs->part,loc->Sector,IOM_MODE_READWRITE);
00000008 1C20 MOV R0,R4 ; fs
0000000A 6800 LDR R0,[R0,#0x0] ; fs
0000000C 1C29 MOV R1,R5 ; loc
0000000E 6809 LDR R1,[R1,#0x0] ; loc
00000010 2202 MOV R2,#0x2
00000012 F7FF BL part_getSect?T ; T=0x0001 (1)
ARM COMPILER V2.42, dir 27/03/06 10:45:48 PAGE 11
00000014 FFF5 BL part_getSect?T ; T=0x0001 (2)
00000016 1C03 MOV R3,R0 ; buf
00000018 ---- Variable 'buf' assigned to Register 'R3' ----
112: (((FileRecord*)buf)+loc->Offset)->FileSize=numbytes;
00000018 1C30 MOV R0,R6 ; numbytes
0000001A 1C29 MOV R1,R5 ; loc
0000001C 7909 LDRB R1,[R1,#0x4]
0000001E 1C0A MOV R2,R1
00000020 0152 LSL R2,R2,#0x5
00000022 1C19 MOV R1,R3 ; buf
00000024 1889 ADD R1,R2 ; buf
00000026 61C8 STR R0,[R1,#0x1C]
113: part_relSect(fs->part,buf);
00000028 1C20 MOV R0,R4 ; fs
0000002A 6800 LDR R0,[R0,#0x0] ; fs
0000002C 1C19 MOV R1,R3 ; buf
0000002E F7FF BL part_relSect?T ; T=0x0001 (1)
00000030 FFE7 BL part_relSect?T ; T=0x0001 (2)
00000032 ; SCOPE-END
114: }
00000032 BC70 POP {R4-R6}
00000034 BC08 POP {R3}
00000036 4718 BX R3
00000038 ENDP ; 'dir_setFileSize?T'
*** CODE SEGMENT '?PR?dir_updateDirectoryEntry?T?dir':
123: esint8 dir_updateDirectoryEntry(FileSystem *fs,FileRecord *entry,FileLocation *loc)
00000000 B5F0 PUSH {R4-R7,LR}
00000002 1C17 MOV R7,R2 ; loc
00000004 ---- Variable 'loc' assigned to Register 'R7' ----
00000004 1C0E MOV R6,R1 ; entry
00000006 ---- Variable 'entry' assigned to Register 'R6' ----
00000006 1C05 MOV R5,R0 ; fs
00000008 ---- Variable 'fs' assigned to Register 'R5' ----
124: {
00000008 ; SCOPE-START
127: buf = part_getSect(fs->part,loc->Sector,IOM_MODE_READWRITE);
00000008 1C28 MOV R0,R5 ; fs
0000000A 6800 LDR R0,[R0,#0x0] ; fs
0000000C 1C39 MOV R1,R7 ; loc
0000000E 6809 LDR R1,[R1,#0x0] ; loc
00000010 2202 MOV R2,#0x2
00000012 F7FF BL part_getSect?T ; T=0x0001 (1)
00000014 FFF5 BL part_getSect?T ; T=0x0001 (2)
00000016 1C04 MOV R4,R0 ; buf
00000018 ---- Variable 'buf' assigned to Register 'R4' ----
128: memCpy(entry,buf+(loc->Offset*sizeof(*entry)),sizeof(*entry));
00000018 1C38 MOV R0,R7 ; loc
0000001A 7900 LDRB R0,[R0,#0x4]
0000001C 0140 LSL R0,R0,#0x5
0000001E 1C21 MOV R1,R4 ; buf
00000020 1809 ADD R1,R0 ; buf
00000022 1C30 MOV R0,R6 ; entry
00000024 2220 MOV R2,#0x20
00000026 F7FF BL memCpy?T ; T=0x0001 (1)
00000028 FFEB BL memCpy?T ; T=0x0001 (2)
129: part_relSect(fs->part,buf);
0000002A 1C28 MOV R0,R5 ; fs
0000002C 6800 LDR R0,[R0,#0x0] ; fs
0000002E 1C21 MOV R1,R4 ; buf
00000030 F7FF BL part_relSect?T ; T=0x0001 (1)
00000032 FFE6 BL part_relSect?T ; T=0x0001 (2)
130: return(0);
00000034 2000 MOV R0,#0x0
00000036 ; SCOPE-END
131: }
00000036 BCF0 POP {R4-R7}
ARM COMPILER V2.42, dir 27/03/06 10:45:48 PAGE 12
00000038 BC08 POP {R3}
0000003A 4718 BX R3
0000003C ENDP ; 'dir_updateDirectoryEntry?T'
*** CODE SEGMENT '?PR?dir_findFileinBuf?T?dir':
143: euint32 dir_findFileinBuf(euint8 *buf, eint8 *fatname, FileLocation *loc)
00000000 B5F0 PUSH {R4-R7,LR}
00000002 1C17 MOV R7,R2 ; loc
00000004 ---- Variable 'loc' assigned to Register 'R7' ----
00000004 1C0E MOV R6,R1 ; fatname
00000006 ---- Variable 'fatname' assigned to Register 'R6' ----
00000006 1C05 MOV R5,R0 ; buf
00000008 ---- Variable 'buf' assigned to Register 'R5' ----
00000008 B088 SUB R13,#0x20
144: {
0000000A ; SCOPE-START
148: for(c=0; c<16; c++)
0000000A 2400 MOV R4,#0x0
0000000C ---- Variable 'c' assigned to Register 'R4' ----
0000000C E03C B L_4 ; T=0x00000088
0000000E L_5:
150: fileEntry = *(((FileRecord*)buf) + c);
0000000E 1C20 MOV R0,R4 ; c
00000010 0602 LSL R2,R0,#0x18 ; c
00000012 0E12 LSR R2,R2,#0x18
00000014 0152 LSL R2,R2,#0x5
00000016 1C29 MOV R1,R5 ; buf
00000018 1889 ADD R1,R2 ; buf
0000001A A800 ADD R0,R13,#0x0
0000001C 2208 MOV R2,#0x8
0000001E L_72:
0000001E C908 LDMIA R1!,{R3}
00000020 C008 STMIA R0!,{R3}
00000022 1E52 SUB R2,R2,#0x1
00000024 D1FB BNE L_72 ; T=0x0000001E
152: if( !( (fileEntry.Attribute & 0x0F) == 0x0F ) )
00000026 200B MOV R0,#0xB
00000028 4468 ADD R0,R13
0000002A 7800 LDRB R0,[R0,#0x0] ; fileEntry+11
0000002C 210F MOV R1,#0xF
0000002E 4008 AND R0,R1
00000030 280F CMP R0,#0xF
00000032 D026 BEQ L_2 ; T=0x00000082
154: if( strMatch((eint8*)fileEntry.FileName,fatname,11) == 0 )
00000034 A800 ADD R0,R13,#0x0
00000036 1C31 MOV R1,R6 ; fatname
00000038 220B MOV R2,#0xB
0000003A F7FF BL strMatch?T ; T=0x0001 (1)
0000003C FFE1 BL strMatch?T ; T=0x0001 (2)
0000003E 0400 LSL R0,R0,#0x10 ; strMatch?T
00000040 0C00 LSR R0,R0,#0x10
00000042 2800 CMP R0,#0x0
00000044 D11D BNE L_2 ; T=0x00000082
157: if(loc)loc->Offset = c;
00000046 1C38 MOV R0,R7 ; loc
00000048 2800 CMP R0,#0x0 ; loc
0000004A D002 BEQ L_9 ; T=0x00000052
0000004C 1C20 MOV R0,R4 ; c
0000004E 1C39 MOV R1,R7 ; loc
00000050 7108 STRB R0,[R1,#0x4]
00000052 L_9:
158: if(loc)loc->attrib = fileEntry.Attribute;
00000052 1C38 MOV R0,R7 ; loc
00000054 2800 CMP R0,#0x0 ; loc
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -