📄 fs.lst
字号:
0000002E 2A04 CMP R2,#0x4
00000030 D101 BNE L_12 ; T=0x00000036
00000032 2401 MOV R4,#0x1
00000034 E000 B L_13 ; T=0x00000038
00000036 L_12:
00000036 2400 MOV R4,#0x0
00000038 L_13:
00000038 4320 ORR R0,R4
0000003A 2A08 CMP R2,#0x8
0000003C D101 BNE L_14 ; T=0x00000042
0000003E 2401 MOV R4,#0x1
00000040 E000 B L_15 ; T=0x00000044
00000042 L_14:
00000042 2400 MOV R4,#0x0
00000044 L_15:
00000044 4320 ORR R0,R4
00000046 2A10 CMP R2,#0x10
00000048 D101 BNE L_16 ; T=0x0000004E
0000004A 2401 MOV R4,#0x1
0000004C E000 B L_17 ; T=0x00000050
0000004E L_16:
0000004E 2400 MOV R4,#0x0
00000050 L_17:
00000050 4320 ORR R0,R4
00000052 2A20 CMP R2,#0x20
00000054 D101 BNE L_18 ; T=0x0000005A
00000056 2401 MOV R4,#0x1
00000058 E000 B L_19 ; T=0x0000005C
0000005A L_18:
0000005A 2400 MOV R4,#0x0
0000005C L_19:
0000005C 4320 ORR R0,R4
0000005E 2A40 CMP R2,#0x40
00000060 D101 BNE L_20 ; T=0x00000066
00000062 2201 MOV R2,#0x1
00000064 E000 B L_21 ; T=0x00000068
00000066 L_20:
00000066 2200 MOV R2,#0x0
00000068 L_21:
00000068 4310 ORR R0,R2
0000006A 2800 CMP R0,#0x0
0000006C D100 BNE L_7 ; T=0x00000070
114: (fs->volumeId.SectorsPerCluster == 64) ))sane=0;
0000006E 2100 MOV R1,#0x0
00000070 L_7:
ARM COMPILER V2.42, fs 27/03/06 10:45:50 PAGE 14
117: if(fs->volumeId.ReservedSectorCount==0)sane=0;
00000070 1C18 MOV R0,R3 ; fs
00000072 8900 LDRH R0,[R0,#0x8]
00000074 2800 CMP R0,#0x0
00000076 D100 BNE L_22 ; T=0x0000007A
00000078 2100 MOV R1,#0x0
0000007A L_22:
118: if(fs->volumeId.FatSectorCount16 != 0){
0000007A 1C18 MOV R0,R3 ; fs
0000007C 8A04 LDRH R4,[R0,#0x10]
0000007E 1C20 MOV R0,R4
00000080 2800 CMP R0,#0x0
00000082 D00D BEQ L_23 ; T=0x000000A0
119: if(fs->volumeId.FatSectorCount16 > fs->part->disc->partitions[fs->part->activePartition].numSectors)sane=0;
00000084 1C18 MOV R0,R3 ; fs
00000086 6800 LDR R0,[R0,#0x0] ; fs
00000088 7902 LDRB R2,[R0,#0x4]
0000008A 0612 LSL R2,R2,#0x18
0000008C 1612 ASR R2,R2,#0x18
0000008E 0112 LSL R2,R2,#0x4
00000090 6800 LDR R0,[R0,#0x0]
00000092 1880 ADD R0,R2
00000094 6942 LDR R2,[R0,#0x14]
00000096 1C20 MOV R0,R4
00000098 4290 CMP R0,R2
0000009A D90F BLS L_25 ; T=0x000000BC
0000009C 2100 MOV R1,#0x0
120: }else{
0000009E E00D B L_25 ; T=0x000000BC
000000A0 L_23:
121: if(fs->volumeId.FatSectorCount32 > fs->part->disc->partitions[fs->part->activePartition].numSectors)sane=0;
000000A0 1C18 MOV R0,R3 ; fs
000000A2 6800 LDR R0,[R0,#0x0] ; fs
000000A4 7902 LDRB R2,[R0,#0x4]
000000A6 0612 LSL R2,R2,#0x18
000000A8 1612 ASR R2,R2,#0x18
000000AA 0112 LSL R2,R2,#0x4
000000AC 6800 LDR R0,[R0,#0x0]
000000AE 1880 ADD R0,R2
000000B0 6942 LDR R2,[R0,#0x14]
000000B2 1C18 MOV R0,R3 ; fs
000000B4 6980 LDR R0,[R0,#0x18]
000000B6 4290 CMP R0,R2
000000B8 D900 BLS L_25 ; T=0x000000BC
000000BA 2100 MOV R1,#0x0
122: }
000000BC L_25:
123: return(sane);
000000BC 1C08 MOV R0,R1 ; sane
000000BE 0400 LSL R0,R0,#0x10 ; sane
000000C0 1400 ASR R0,R0,#0x10
000000C2 ; SCOPE-END
124: }
000000C2 BC10 POP {R4}
000000C4 4770 BX R14
000000C6 ENDP ; 'fs_verifySanity?T'
*** CODE SEGMENT '?PR?fs_countDataSectors?T?fs':
132: void fs_countDataSectors(FileSystem *fs)
00000000 B510 PUSH {R4,LR}
00000002 1C02 MOV R2,R0 ; fs
00000004 ---- Variable 'fs' assigned to Register 'R2' ----
133: {
00000004 ; SCOPE-START
136: rootDirSectors=((fs->volumeId.RootEntryCount*32) +
00000004 1C10 MOV R0,R2 ; fs
00000006 8881 LDRH R1,[R0,#0x4]
ARM COMPILER V2.42, fs 27/03/06 10:45:50 PAGE 15
00000008 1C0B MOV R3,R1
0000000A 3B01 SUB R3,#0x1
0000000C 1C10 MOV R0,R2 ; fs
0000000E 8980 LDRH R0,[R0,#0xC]
00000010 0140 LSL R0,R0,#0x5
00000012 18C0 ADD R0,R3
00000014 F7FF BL ?C?UDIV?T ; T=0x0001 (1) ; ?C?UDIV?T
00000016 FFF4 BL ?C?UDIV?T ; T=0x0001 (2) ; ?C?UDIV?T
00000018 1C08 MOV R0,R1
0000001A 1C03 MOV R3,R0
0000001C ---- Variable 'rootDirSectors' assigned to Register 'R3' ----
140: if(fs->volumeId.FatSectorCount16 != 0)
0000001C 1C10 MOV R0,R2 ; fs
0000001E 8A00 LDRH R0,[R0,#0x10]
00000020 1C01 MOV R1,R0
00000022 2900 CMP R1,#0x0
00000024 D006 BEQ L_28 ; T=0x00000034
142: fs->FatSectorCount=fs->volumeId.FatSectorCount16;
00000026 1C01 MOV R1,R0
00000028 1C10 MOV R0,R2 ; fs
0000002A 6241 STR R1,[R0,#0x24]
143: fs->volumeId.FatSectorCount32=0;
0000002C 2100 MOV R1,#0x0
0000002E 1C10 MOV R0,R2 ; fs
00000030 6181 STR R1,[R0,#0x18]
144: }
00000032 E006 B L_29 ; T=0x00000042
00000034 L_28:
147: fs->FatSectorCount=fs->volumeId.FatSectorCount32;
00000034 1C10 MOV R0,R2 ; fs
00000036 6981 LDR R1,[R0,#0x18]
00000038 1C10 MOV R0,R2 ; fs
0000003A 6241 STR R1,[R0,#0x24]
148: fs->volumeId.FatSectorCount16=0;
0000003C 2100 MOV R1,#0x0
0000003E 1C10 MOV R0,R2 ; fs
00000040 8201 STRH R1,[R0,#0x10]
149: }
00000042 L_29:
151: if(fs->volumeId.SectorCount16!=0)
00000042 1C10 MOV R0,R2 ; fs
00000044 89C0 LDRH R0,[R0,#0xE]
00000046 1C01 MOV R1,R0
00000048 2900 CMP R1,#0x0
0000004A D006 BEQ L_30 ; T=0x0000005A
153: fs->SectorCount=fs->volumeId.SectorCount16;
0000004C 1C01 MOV R1,R0
0000004E 1C10 MOV R0,R2 ; fs
00000050 6281 STR R1,[R0,#0x28]
154: fs->volumeId.SectorCount32=0;
00000052 2100 MOV R1,#0x0
00000054 1C10 MOV R0,R2 ; fs
00000056 6141 STR R1,[R0,#0x14]
155: }
00000058 E006 B L_31 ; T=0x00000068
0000005A L_30:
158: fs->SectorCount=fs->volumeId.SectorCount32;
0000005A 1C10 MOV R0,R2 ; fs
0000005C 6941 LDR R1,[R0,#0x14]
0000005E 1C10 MOV R0,R2 ; fs
00000060 6281 STR R1,[R0,#0x28]
159: fs->volumeId.SectorCount16=0;
00000062 2100 MOV R1,#0x0
00000064 1C10 MOV R0,R2 ; fs
00000066 81C1 STRH R1,[R0,#0xE]
160: }
ARM COMPILER V2.42, fs 27/03/06 10:45:50 PAGE 16
00000068 L_31:
162: dataSectorCount=fs->SectorCount - (
00000068 1C10 MOV R0,R2 ; fs
0000006A 7A80 LDRB R0,[R0,#0xA]
0000006C 1C04 MOV R4,R0
0000006E 1C10 MOV R0,R2 ; fs
00000070 6A40 LDR R0,[R0,#0x24]
00000072 4344 MUL R4,R0
00000074 1C10 MOV R0,R2 ; fs
00000076 8900 LDRH R0,[R0,#0x8]
00000078 1C01 MOV R1,R0
0000007A 1909 ADD R1,R4
0000007C 1C18 MOV R0,R3 ; rootDirSectors
0000007E 1809 ADD R1,R0 ; rootDirSectors
00000080 1C10 MOV R0,R2 ; fs
00000082 6A83 LDR R3,[R0,#0x28]
00000084 1A5B SUB R3,R1
00000086 ---- Variable 'dataSectorCount' assigned to Register 'R3' ----
167: fs->DataClusterCount=dataSectorCount/fs->volumeId.SectorsPerCluster;
00000086 1C10 MOV R0,R2 ; fs
00000088 7980 LDRB R0,[R0,#0x6]
0000008A 1C01 MOV R1,R0
0000008C 1C18 MOV R0,R3 ; dataSectorCount
0000008E F7FF BL ?C?UDIV?T ; T=0x0001 (1) ; ?C?UDIV?T
00000090 FFB7 BL ?C?UDIV?T ; T=0x0001 (2) ; ?C?UDIV?T
00000092 1C08 MOV R0,R1
00000094 1C11 MOV R1,R2 ; fs
00000096 6208 STR R0,[R1,#0x20]
00000098 ; SCOPE-END
168: }
00000098 BC10 POP {R4}
0000009A BC08 POP {R3}
0000009C 4718 BX R3
0000009E ENDP ; 'fs_countDataSectors?T'
*** CODE SEGMENT '?PR?fs_determineFatType?T?fs':
176: void fs_determineFatType(FileSystem *fs)
00000000 1C02 MOV R2,R0 ; fs
00000002 ---- Variable 'fs' assigned to Register 'R2' ----
178: if(fs->DataClusterCount < 4085)
00000002 1C10 MOV R0,R2 ; fs
00000004 6A01 LDR R1,[R0,#0x20]
00000006 4800 LDR R0,=0xFF5
00000008 4281 CMP R1,R0
0000000A D207 BCS L_32 ; T=0x0000001C
180: fs->type=FAT12;
0000000C 2301 MOV R3,#0x1
0000000E 1C10 MOV R0,R2 ; fs
00000010 303C ADD R0,#0x3C
00000012 7003 STRB R3,[R0,#0x0]
181: fs->volumeId.RootCluster=0;
00000014 2300 MOV R3,#0x0
00000016 1C10 MOV R0,R2 ; fs
00000018 61C3 STR R3,[R0,#0x1C]
182: }
0000001A E00E B L_33 ; T=0x0000003A
0000001C L_32:
183: else if(fs->DataClusterCount < 65525)
0000001C 4800 LDR R0,=0xFFF5
0000001E 4281 CMP R1,R0
00000020 D207 BCS L_34 ; T=0x00000032
185: fs->type=FAT16;
00000022 2102 MOV R1,#0x2
00000024 1C10 MOV R0,R2 ; fs
00000026 303C ADD R0,#0x3C
00000028 7001 STRB R1,[R0,#0x0]
186: fs->volumeId.RootCluster=0;
ARM COMPILER V2.42, fs 27/03/06 10:45:50 PAGE 17
0000002A 2100 MOV R1,#0x0
0000002C 1C10 MOV R0,R2 ; fs
0000002E 61C1 STR R1,[R0,#0x1C]
187: }
00000030 E003 B L_33 ; T=0x0000003A
00000032 L_34:
190: fs->type=FAT32;
00000032 2103 MOV R1,#0x3
00000034 1C10 MOV R0,R2 ; fs
00000036 303C ADD R0,#0x3C
00000038 7001 STRB R1,[R0,#0x0]
191: }
0000003A L_33:
192: }
0000003A 4770 BX R14
0000003C ENDP ; 'fs_determineFatType?T'
*** CODE SEGMENT '?PR?fs_findFirstSectorRootDir?T?fs':
200: void fs_findFirstSectorRootDir(FileSystem *fs)
00000000 1C02 MOV R2,R0 ; fs
00000002 ---- Variable 'fs' assigned to Register 'R2' ----
202: if(fs->type==FAT32)
00000002 1C10 MOV R0,R2 ; fs
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -