⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fs.lst

📁 Philips LPC2138 Demo Application with Keil C
💻 LST
📖 第 1 页 / 共 5 页
字号:
 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 + -